반응형

딥러닝/모두를 위한 딥러닝 시즌1 17

[모두를 위한 딥러닝 시즌1] Lec12. NN의 꽃 RNN 이야기

이전에 배운 CNN은 우리 말로 순환 신경망이라고 부른다. 대표적으로 이미지 처리에 이용되고 있다. 단연 모든 데이터를 CNN으로만 처리할 수 없다. 데이터들마다 특징이 있는데 이전 데이터가 나중 데이터에 영향을 주는 형태의 경우는 일반적인 NN이나 CNN으로는 해결이 불가능하다. 이런 문제에 이용하는 신경망이 RNN이다. 대표적으로 언어를 처리하는 모델들이 이것을 기반으로 한다. 언어는 이전 단어를 기준으로 다음 단어를 유추할 수 있는 구조이기 때문에 이러한 모델을 사용한다. 모델을 연속적으로 그려보면 위의 그림과 같은데 각 layer에 input이 들어오기도 하지만 이전 layer에서 이용된 값이 사라지는 것이 아니라 그대로 다음 모델에 영향을 주는 형태이다. 이것을 식으로 나타내면 위와 같다. 현재..

[모두를 위한 딥러닝 시즌1] Lec11-02. ConvNet Max pooling 과 Full Network

저번 시간에는 CNN의 기본적인 구조와 어떻게 CNN을 이용한 모델을 만들고 사용할 수 있는지 알아보았다. 이번에는 CNN 모델에 이미지의 사이즈를 줄여주는 sub sampling 기법에 대해서 알아보려고 한다. 위의 그림과 같이 이 기법은 "Pooling"이라고 불린다. input으로 들어온 데이터에 pooling을 적용하면 그 사이즈를 줄일 수 있다. Pooling에는 Max pooling (가장 큰 값만 고름) Average pooling (receptive field 안의 평균값을 이용) Stochastic pooling Cross channel pooling 등이 있다. 강의에서는 max pooling을 예시로 살펴본다. CNN의 필터와 비슷하게 여기에도 필터가 존재한다. receptive fi..

[모두를 위한 딥러닝 시즌1] Lec11-01. ConvNet의 Conv 레이어 만들기

이제 우리는 머신러닝의 기본 개념과 딥러닝의 기초 그리고 모델의 효율을 높이기 위해 지금까지 발전해온 다양한 기법들을 알게 되었다. 어떤 모델이든 우리의 상상력만 더해진다면 충분히 만들 수 있다고 교수님이 강의에서 말하신다. 당연히 오랜 기간 연구를 걸쳐오면서 CNN, RNN 등 많은 분야에서 큰 역할을 한 모델들이 생겨났다. 남은 11강, 12강에서는 가장 기초과 되는 CNN과 RNN의 구조를 알아본다. CNN은 고양이가 이미지를 인식할 때 이미지에 따라 특정 뉴런만 반응하는 것을 보고 만들어진 인공 신경망이다. 아이디어는 이미지 파일에서 특정 사이즈의 필터를 이용하여 사이즈를 축소시켜 나가는 것이다. 필터가 무엇이고 어떻게 동작하는지 살펴보자. 특정 사이즈의 필터를 정의하면, 몇 칸을 건너뛰면서 필터..

[모두를 위한 딥러닝 시즌1] Lec10-03. Dropout과 앙상블

Dropout이라는게 뭔지 생각해보려면 머신러닝 기초 파트를 공부할 때 배웠던 overfitting에 대해서 다시 상기해야한다. Overfitting이란 train data에 과하게 학습이 되어 그 이외의 데이터에서는 정확도가 떨어지는 현상을 의미한다. 이것을 해결하기 위해서 다양한 해결법이 존재했다. 3가지 정도를 봤었고 그 중에서 regularization이 조금 특이했기에 식까지 살펴보았다. cost 값에 상수와 weight 제곱의 합의 곱을 더해주는 L2 형식의 규제를 살펴보았었다. 위의 내용은 강의 7강에 담겨있다. Dropout 도 딥러닝에서 overfitting을 해결하는 방법 중 하나이다. 그 아이디어가 특이하기에 살펴볼 필요가 있다. 위의 그림에서 보이는 것과 같이 학습 시 neural ..

[모두를 위한 딥러닝 시즌1] Lec10-02. Weight 초기화

저번 강의에서는 back-propagation 의 문제점이 어떻게 해결되었고, 그 결과 neural network 가 어떻게 발전하였는지 알아보았다. 이제 계속해서 인공 신경망의 결과를 더욱 좋게 만들기 위해 발전이 이루어지기 시작했다. 그 중 하나는 초깃값을 어떻게 잡는지에 관련되어있다. Geoffrey Hinton은 당시 초깃값을 stupid way로 설정했다라고 말했다. 초깃값이 인공신경망의 학습에 시작이 되는만큼 얼마나 중요한 역할을 하는지를 나타내는 대목이다. 예를들어 특정 층의 초깃값을 0으로 설정한다면 역전파 시 어느 순간부터 0이 전달되기 시작할 것이다. 즉 역전파를 방해하는 요소가 된다. 그렇게 첫 번째로 고안된 것이 "Restricted Boatman Machine" 이다. 이 방법은 ..

[모두를 위한 딥러닝 시즌1] Lec10-01. ReLU activation function

이번 시간에는 ReLU에 대해서 알아본다. ReLU가 뭔지 그리고 왜 사용하는지 알아야하는데, 이것을 위해서는 역전파 시 발생했던 문제에 대해서 알아야한다. 갑자기 cost와 accuracy 그래프가 나와서 당황했을 수도 있겠다. 우리가 배운대로 multi layer 모델을 사용했을 때의 결과이다. 무엇인가 이상하다. cost는 갑자기 0이 되었고, accuracy도 이상한 움직임을 보인다. 즉 제대로 결과가 나오지 않은 것이다. 이런 현상은 우리가 만든 모델을 좀 더 구체적으로 생각해보면 된다. Backpropagation을 진행할 때 chain rule을 기반으로 계산을 했었다. 또한 그 안에서 sigmoid 계산으로 0~1 사이의 값으로 바꿔주는 과정이 있었다. 즉, 층이 늘어날수록 chain ru..

[모두를 위한 딥러닝 시즌1] Lec09. XOR 문제 딥러닝으로 풀기

저번 시간 마지막 부분에 다뤘던 문제점은 Lec 10에서 좀 더 생각을 해보기로 하자. 일단은 다층 퍼셉트론, 즉 Neural Network를 이용해서 이전에 풀지 못했던 XOR 문제가 해결되는지 살펴보자. 다음과 같이 간단한 NN을 만들었다고 생각해보자. Sigmoid 함수를 이용하기에 0 아니면 1의 결과를 낼 것이다. 예를 들어, 첫 번째 케이스인 x1 = 0, x2 = 0인 경우를 봐보자. 보라색 층과 초록색 층을 통과한 결과가 각각 y1, y2가 되어 다시 검정색 층에 들어갈 것이다. 계산을 통해 결과를 정리하면 아래와 같다. 이제 결과를 보면 우리가 원하는 XOR의 올바른 결과를 예측했음을 알 수 있다. 물론 우리가 지정한 weght과 bias 이외에도 다른 w, b 값도 존재할 것이다. 실제..

[모두를 위한 딥러닝 시즌1] Lec08. 딥러닝: 시작과 XOR 문제, Back-propagation

이번 강의부터 본격적으로 딥러닝에 대해서 배우기 시작한다. 그 시작 강의이기에 딥러닝이 어떻게 발전했는지 간략한 역사를 배운다. 가볍게 알아두면 좋을 것 같다. 딥러닝, 인공신경망 이라는 것을 말에서 알 수 있듯이 사람의 뇌에 있는 신경망을 컴퓨터에서 구현하려는 목적으로 생겨났다. 컴퓨터를 사람처럼 생각하게 만들기 위한 방법이었다고 할 수 있다. 연구자들은 weight과 bias를 이용하여 결과를 출력하는 신경망의 작동을 식으로 표현하였고, 이때부터 이것을 컴퓨터에 적용하기 위한 노력이 시작된다. 하지만 당시 기술력으로는 현재와 같은 수준의 딥러닝이 존재하지 않았다. 연구가 막 시작되던 때였고 뒷받침해줄만한 컴퓨터도 존재하지 않았을 것이다. 하지만 과학자들은 위와같이 너무 먼 미래를 미리 생각하였고 기대..

[모두를 위한 딥러닝 시즌1] Lec07-2. Training/Testing 데이터 셋

기본적으로 Training data는 모델을 학습시킬 때 이용하는 데이터를 의미한다. 만약 우리의 모델을 평가하는데 다시 이 training data를 사용해도 괜찮을까? 당연히 안된다. 공부를 한 문제집으로 다시 시험을 보면 올바른 평가가 될 수 없을 것이다.우리가 만든 모델은 공부시킨 데이터가 아니라 다른 어떤 데이터가 들어오더라도 올바른 결과를 내놓는 것을 목표로 하는 것이다. 이때 필요한 것이 학습에 참여하지 않은 새로운 데이터, Test data이다. (전체 data의 15% ~ 20%)  이와 더불어 우리는 모델을 학습시키면서 다양한 파라미터들을 조정하고 효율이 높은 파라미터를 찾아야한다.파라미터를 조정하고 그때마다 Test data로 테스트를 해보는 과정은 올바른 과정일까? 결국 파라미터 조..

[모두를 위한 딥러닝 시즌1] Lec07-1. 학습 rate, Overfitting, 그리고 일반화 (Regularization)

이번 7강에서는 모델의 관점이 아닌 학습의 관점에서 어떤 것들이 영향을 미칠 수 있는지, 그리고 어떻게 해야 좋은 결과를 얻을 수 있는지 등을 배운다. 1. Learning Rate 먼저 배우는 것은 learning rate이다. 경사 하강법에 대해서 배울 때 이미 배운 적이 있다. 알파 값에 해당하는 learning rate가 커지게 되면 학습 속도가 빨라지게 되고, 작아지면 학습 속도가 느려지는 결과를 얻는다. 우리가 어떤 일을 할 때 빨리하면 투자하는 시간은 줄어들지만 완성도가 낮아질 수 있다. 또 너무 느리게하면 꼼꼼하게 하여 완성도를 높일 수 있겠지만 투자하는 시간은 매우 늘어날 것이다. 학습 모델도 마찬가지이다. 학습 속도가 너무 빠르면 우리가 원하는 cost의 최솟값을 지나치고 다시 증가하는..

728x90