티스토리 뷰

모두의 딥러닝

딥러닝의 기본 개념과, 문제, 그리고 해결

강의-1

우리의 궁극적인 목표는 생각하는 기계를 만드는 것이다.

우리의 뇌는 위의 이미지와 같이 구성되어 있는데, 뉴런은 각각의 다른 길이로 구성된 신경(w)으로 되어있다. 그래서 해당 신경으로부터 전해진 데이터(x) 합한(시그마) 다음 값이 통과하면서 어떤 (bias) 곱해지고 일정 값이 이상이 되면 신호를 전달하는 구조로 되어있다고 한다.

이러한 뇌를 똑같이 구성하면 우리가 원하는 궁극적인 목표인 생각하는 기계를 만들 있을 것이라 생각했다.

Logistic regression 여러 개로 구성하면 위의 이미지와 같이 구성이 된다.

당시에는 우리가 원하는 목표인 생각하는 기계를 만들 있다는 기대로 가득 찼다. 그러나 위의 이미지에서 나오는 xor 그래프 때문에 이런 기대는 사그라지고 만다.

Or and 그래프는 구성이 되지만 xor 그래프의 경우 어떻게 선을 나눠도 우리가 원하는 Linear regression그래프의 형태는 나타날 수가 없기 때문이다.

그래서 다음과 같이 어느 누구도 생각하는 기계를 만들 수는 없을 것이다고 Minsky 교수(영향력이 상당했던)님이 말하였고,

XOR 문제는 Layer 여러 사용하여 해결할 있지만, 문제는 Layer 여러 있을 , 각각의 layer에서 사용한 W b값을 조절하여 학습할 없다는 , 증명함으로써 머신 러닝은 침체기로 접어든다.

그러나 이러한 분위기에도 몇몇의 연구자들은 포기하지 않았고, 결국, Backpropagation이라는 알고리즘을 이용하여, 해당 내용을 학습시킬 있다는 논문을 발표한다.

CNN 고양이를 통해 신경세포를 관찰 하니, 특정 그림에서만 신경 세포가 반응을 하는 있었다. 그래서 반응하는 신경세포들의 합을 가지고 물체를 인식하는게 아닐까 라는 생각을 하게 되고 CNN이라는 Neural Network 연구하게 된다.

Neural Networks 성공적이었고, 성공률도 좋았다.

그러나 다시 문제점에 봉착하게 되는데, 복잡한 문제를 해결하기 위해 여러 개의 Layer 두고 Backpropagation 사용하여, 위의 이미지와 같이 학습을 시키는 경우, 뒤에서 앞으로 올수록 점점 값이 갖는 중요도가 떨어지게 된다. 여러개의 Layer 첫번째 Layer 갖는 의미가 강하지만, Backpropagation 사용하면, 점점 의미가 약해지기 때문에, 학습이 오히려 간단한 다른 알고리즘이 잘되었기 때문이다.

강의-2

Neural Networks 다시 침체기를 가질 , 후원한 단체로 지금 이렇게 머신 러닝 기술이 발전할 있도록 지원한 단체로 설명한다.

그리고 결국, 다시 한번 논문이 발표되면서 Neural Network 관심을 갖게 되는데, 2006년도 논문은 초기값을 설정하면, 위에 봉착했던 문제는 해결될 있다를 증명하였고, 2007년도에는 깊은 학습법을 논문으로 발표하였고, , 처음으로 딥러닝이라는 용어를 사용하게 되었다.

그리고 이미지넷이라는 이미지를 분류하는 대회에 관심을 갖게됨으로 딥러닝은 엄청난 속도로 발전을 하게 된다.

결국에는 스탠포드 학생이 학습하여 사진을 분류한 보다 컴퓨터가 높은 성능을 보이면서, 많은 이목을 집중 시키는 계기가 되었다.

 

다음 내용들은 회사에서 딥러닝을 이용하여, 서비스하는 사례를 설명하며 마무리한다.

 

Lab

이번 강의에서는 텐서를 다루는 팁에 대해 강의한다. 이번 강의는 이미지가 충분히 설명하고 있으므로, 설명이 필요한(개인적인 생각으로) 부분만 메모하도록 한다.

여기서 pprint 모듈을 있는데 해당 모듈은 pretty print 데이터를 보기 좋고 쉽게 콘솔 창에 출력하도록 돕는 모듈이다.

2 배열이므로 Rank 2, Shape (4, 3) 이다.

Rank 높아질수록 눈에 파악하기가 어려워 진다.

Matmul Multiply 차이점에 대해 간략히 설명하면, Matmul 행렬곱이다.

그래서 (2,2) * (2,1) = (2,1) 결과가 나타난다.

Multiply 배열에 맞게? 곱을 해준다. 그래서 결과값은 위의 그림과 같이 (2,2) * (2,1) = (2,2) 된다.

다음으로 Broadcasting 대해 김성훈 교수님은 알고 쓰면 정말 유익하지만, 잘못사용하게 되면 엄청난 실수를 일으킬 있다고 주의해서 사용하라고 당부하신다. 우리가 수학적으로 알고 있는 일반적인 행렬과 달리 Broadcasting 데이터를 여러 곳에 보내는 역할을 한다.

다음은 우리가 자주 사용했던 평균을 구하는 함수이다. 여기서 axis 개념에 대해 이해할 있는데, axis 그대로 축이다. 그래서 매트릭스의 위치() 따라 평균을 구하고 싶으면, axis 값을 정하면 해당 축에 평균을 나타내준다.

다음은 합을 구하는 함수

함수의 경우는 축에 따른 최대값의 위치를 알려준다.

배열의 형태를 변환하는 함수인데, 자주 사용하는 함수이므로 중요하다고 말씀하신다.

우리가 원하는 shape으로 기존의 배열을 변형해준다.

우리가 원하는 형태로 수축, 팽창할 있다.

우리가 기존에 자주 사용했던 One hot 함수로, 자연수 값을 배열로 나타낸다. Depth라는 옵션을 사용하여, 우리가 원하는 만큼의 크기의 one hot 형태 배열로 만들 있다.

우리가 원하는 형태로 변환하는 함수이다. Float에서 int 변환 , 소수 값은 내림으로 변환된다.

데이터를 쌓는 함수이다. 특이한 점은 또한 axis 사용하여, 우리가 원하는 형태의 배열로 데이터를 쌓을 있다.

어떤 배열의 모든 값을 1, 그리고 0으로 만들어 주는 두가지 함수이다.

여러 개의 배열을 한번에 출력 있도록 해주는 함수이다.

 

이번 강의는 이미지로 충분히 설명이 가능하기 때문에, 이미지 외의 부가적인 설명은 생략했다. 김성훈 교수님은 이번 내용의 경우, 머신 러닝을 다루면서 자연스레 알게 되는 부분이라, 이런 것이 있다는 것만 알고 가자고 말씀하신다.




댓글
공지사항
최근에 올라온 글
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함