이전 장에서 본 LeNet, AlexNet의 경우 컨볼루션 레이어가 3개, 5개밖에 되지 않았다. 최근의 신경망은 100개 이상의 컨볼루션 레이어를 가지고 있다. 이렇게 층을 깊게 한 Deep Neural Network를 사용하는 것을 Deep Learning이라고 한다. 8.1.3 깊게 하는 이유 층을 깊게 하는 이유가 무엇일까? 위와 같은 convolution 연산을 생각해보자. 5x5 합성곱 연산 1회는 3x3 합성곱 연산 2회로 대체 할 수 있다. 매개변수의 개수도 25개에서 16개로 줄어들며, 층을 더 깊게 할 수록 더 많이 줄일 수 있다. 같은 receptive field를 가지면서, 학습할 매개 변수의 개수는 줄어든다. 문제를 계층화 하여 각 층의 문제를 더욱 단순한 문제로 대체할 수 있다...
CNN은 Convolution Neural Network의 약자로, 이미지 recognition 분야에서 대표적으로 쓰이는 기법이다. 이번 스터디에 ResNet 논문 읽고 구현하기가 포함됐던 만큼, 이번 장이 핵심 내용인 셈이다. 7.1 CNN의 전체 구조 지금까지 봤던 Neural Network의 경우, 인접한 계층의 모든 뉴런과 연결되어 있었는데 이를 Fully connected layer(완전 연결 계층), Affine 계층 이라 칭한다. Affine 계층의 경우 다음에 활성화 함수 레이어(ReLU 또는 Sigmoid)가 이어지므로 Input - Affine - ReLU - Affine - ReLU - ... - Affine - Softmax(출력층) 의 형태로 네트워크를 구성할 수 있다. CNN에..
학습이 무엇인지, 어떻게 하는지 배웠으니 이제 학습을 더 다듬을 차례이다. 이번 단원에서는 신경망 학습의 효율, 정확도를 높이기 위한 기술들을 알아본다. 6.1 매개변수 갱신 -Neural Network의 손실함수를 낮추기 위해 우리는 parameter를 갱신했다. 이렇게 parameter의 최적값을 찾는 과정을 최적화(optimization)이라고 부른다. - 이전 단원에서 gradient를 갱신했던 방법은 확률적 경사 하강법(Stochastic Gradient Descent)라 부른다. 그렇다면 SGD 특징과, 이 외의 다른 갱신 방법엔 어떤 것이 있을까? 6.1.2 SGD class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, p..
이전 챕터에서는 numerical differentiation을 이용해 gradient를 구했다. 다만, 이 구현방법 때문에 학습 시간이 매우 오래걸렸다. 따라서 이번 챕터에서는 gradient를 효율적으로 계산하기 위해 backpropagation을 알아볼 것이다! 5.1 계산 그래프 Computational Graph - directed graph 이므로 방향(direction)을 가진다. - 계산 과정을 그래프로 표현한 것. 그래프이므로 Node와 Edge를 가진다. - 계산 그래프에서 계산을 진행해 답을 도출하는 단계를 순전파(Forward Propagation), 그 반대 방향으로 전파하는 것을 역전파(Back Propagation)이라고 한다. - 계산 그래프의 가장 중요한 특징은 국소적 계산..
이전 챕터까지는 데이터의 매개변수, 즉 weight와 bias를 직접 제공하였다. 머신러닝에서는 data vector에서 사람이 feature를 추출하고(SIFT, HOG 등) feature들의 규칙을 학습으로 찾아낸다. 딥러닝의 경우 이미지의 feature 또한 스스로 학습한다. 이런 의미에서 딥러닝을 end-to-end machine learning이라 하기도 한다. 4.2 Loss Function 손실 함수는 딥러닝에서 최적의 매개변수를 찾기 위해 사용하는 함수이다. 일반적으로 사용하는 두 가지 함수를 알아보자! 4.2.1 SSE(오차 제곱합, Sum of Squares for Error) 4.2.2 CEE (교차 엔트로피 오차, Cross Entropy Error) 이 때 책에서는 원-핫 인코딩을..
3.1.2 퍼셉트론 복습 인공 신경망은 퍼셉트론과 비슷하면서 다르다. 여러개의 층으로 이루어져 있고, 은닉층(hidden layer)가 존재한다. 3.1.3 활성화 함수(activation function) 활성화 함수는 입력신호의 총합에 적용되어 활성화를 일으키는지 결정하는 역할을 한다. 원래 a라는 결과를 가진 노드를 노드를 y라는 노드로 변환 시켜주는 역할을 하는 함수인 것이다. - 활성화 함수는 비선형 함수여야 한다. 선형함수를 사용하면, 얼마나 많은 레이어가 네트워크에 있는지에 관계없이 결국 single-layer perceptron로 구현할 수 있는, 똑같이 행동하는 네트워크가 된다. 3.2.1 시그모이드 함수(sigmoid function) - 시그모이드 함수의 중요한 특징 중 하나는, 입력..