목록AI/Deep Learning (49)
우노
CNN의 Layer 유형은 다음과 같습니다. Convolution Layer Pooling Layer Fully Connected Layer 해당 포스트에서는 Convolution Layer와 Pooling Layer 중심으로 다뤄보겠습니다. Convolution Layer 컨볼루션이란, 원본 이미지에서 특징을 추출하는 수학적 연산을 의미하며 (n, n) 이미지에 (f, f) 크기의 필터를 적용해 특징을 추출하게 됩니다. 아래 그림에서, 녹색 (5, 5) 행렬은 원본 이미지, 노란색 (3, 3) 행렬은 필터입니다. 필터는 원본 이미지 위를 이동하며, 이미지 픽셀 값과 필터 픽셀 값의 내적의 합을 출력으로 나타내게 됩니다. 딥러닝에서는, 이미지에서 원하는 특징을 감지할 수 있도록 필터의 값을 학습하게 됩니..
CNN 종류는 다음과 같습니다. Classic Networks LeNet-5 AlexNet VGG-16 ResNet Inception(GoogLeNet) Network 들어가기 앞서, 입력 이미지 크기로부터 출력 이미지 크기를 추론하는 공식은 Convolution layer와 Pooling layer 모두 동일하며 아래와 같습니다. (n, n, c) 이미지에 대해 p 만큼 패딩한 후, c' 개의 (f, f, c) 필터 블록으로 s 씩 건너띄며 컨볼루션 한다면, 출력 이미지의 크기는 ((n+2p-f)/s+1, (n+2p-f)/s+1, c') 가 됩니다. (N+2p-f)/s + 1 가 실수라면 소수점 아래 부분은 버립니다. LeNet-5 LeNet-5은 손글씨 숫자를 인식하는 네트워크입니다. LeNet-5는..
Transfer Learning 이란? 기존의 만들어진 모델을 사용하여 새로운 모델을 만드는 것입니다. 학습이 빨라지며, 예측도 높아집니다. 왜 사용할까? 이미 학습된 모델을 사용해서 문제를 해결할 수 있습니다. 실질적으로 Convolution network을 처음부터 학습시키는 일은 많지 않습니다. 만들고자하는 모델이 복잡한 모델일수록 학습시키기 어렵습니다. layers의 갯수, activation, hyper parameters등등 고려해야 할 사항들이 많습니다. 모델 학습이 오래 걸릴 수도 있습니다. 학습 데이터의 수가 적을때 효과적입니다. 또한, 전이학습 없이 학습하는 것보다 학습 속도도 빠르며 훨씬 높은 정확도를 제공한다는 장점이 있습니다. 즉, 이미 잘 훈련된 모델이 있고, 해당 모델과 유사한..
End-to-End Deep Learning 딥러닝은 '종단간 기계학습(end-to-end deep learning)' 이라고도 불린다. 여기서 '종단간' 은 처음부터 끝까지라는 의미로, 입력에서 출력까지 '파이프라인 네트워크' 없이 한 번에 처리한다는 뜻이다. 파이프라인 네트워크 : 전체 네트워크를 이루는 부분적인 네트워크 하지만, End-to-End Deep Learning 은 만능이 아니다. 신경망에 너무 많은 계층의 노드가 있거나, 메모리가 부족할 경우 사용할 수 없다. 또한, 문제가 복잡할 수록, '전체 네트워크' 를 '파이프라인 네트워크' 로 나눠서 해결하는 것이 더 효율적일 때도 있다. 데이터의 정보가 나눠진 각각의 파이..
기존에는 Gradient Vanishing, Exploding 현상을 해결하고 학습을 안정화하기 위해서 새로운 활성화 함수를 찾거나 가중치를 초기화하는 방법을 사용했었다. 하지만, 배치 정규화를 통해서 보다 근본적으로 학습과정을 안정화할 수 있고 빠르게 할 수 있다. 배치 정규화 (Batch Normalization, BN) 배치라는 단어는 전체 데이터에서 일부분을 칭하는 단어이다. 신경망을 학습시킬 때, 보통 전체 데이터를 한 번에 학습시키지 않고, 조그만 단위로 분할해서 학습을 시키는데, 이 때 조그만 단위가 배치이다. 큰 사이즈의 데이터를 한 번에 학습시키는 것은 시간이 오래걸린다. 따라서, 배치 단위로 정규화하는 것을 배치 정규화라고 부른다. 배치들은 학습을 진행하며, 각 layer의 활성화함수 ..
이전 포스트에서는 배치 경사하강법, 확률적 경사하강법, 미니 배치 확률적 경사하강법에 대해서 다뤘었다. https://wooono.tistory.com/93 개요 기존의 경사하강법(Gradient descent method)에서 특정 데이터만을 샘플링하여 학습하는 확률적 경사 하강법(SGD)은, deep neural network를 학습시키기 위해 주로 이용되고 있는 최적화 기법이다. 미니 배치 단위로 정의되는 loss function을 L이라 할 때, SGD를 통한 neural network의 i번째 뉴런의 j번째 weight(w_ij)는 다음과 같이 update된다. 이 때, η 는 learning rate 라고 하는 hyperparameter이고 ∂L / ∂w_ij(t) 는 gradient라고 하는..
지수 가중 평균 (Exponentially Weighted Averages) 데이터의 이동 평균을 구할 때 오래된 데이터가 미치는 영향을 지수적으로 감쇠(exponential decay) 하도록 만들어 주는 방법이다. 손실함수의 최저점을 찾기 위한 최적화 알고리즘을 이해하기 위해서 필요한 사전 지식 중의 하나이다. 지수 가중 평균의 예 런던 기온의 일별 데이터가 위 그림의 파란점으로 분포되어 있다. 시간의 흐름에 따라 이 데이터가 어떻게 움직이는지를 경향선을 보고싶다고 가정하자. 만약, 단순히 전후 며칠간의 평균으로만 계산한다면, 오래된 데이터의 영향과 최신 데이터의 영향이 비슷해져버리므로 우리가 원하는 추세를 나타낼 수 없을 것이다. 이를 보완하기 위해, 오래된 데이터와 최신 데이터에 Weight를 부..
Inverted Dropout dropout은 모델의 overfitting을 줄이는 방법 중 하나이다. overfitting을 줄이는 방법으로는 L1 Regularization, L2 Regularization, dropout 등이 있다. dropout의 사전적 의미는 탈락, 낙오이다. 즉, dropout은 deep learning 학습마다, 전체 노드를 계산에 참여시키는 것이 아니라, 일부의 노드만 계산에 참여시키는 것이다. 따라서, 참여되는 노드는 매 학습마다 달라지며 이렇게 학습시킨 신경망의 결과는, 마치 비슷하지만 서로 다른 여러개의 신경망 모형들의 결과를 평균낸 것과 유사한 형태가 된다. 신경망 여러개의 결과가 평균 내졌기 때문에, 일반적이지 않은 분류 결과가 제거되는 정규화 효과를 가진다. 순..
가중치 초기화의 중요성 Gradient Vanishing 문제란, MLP를 학습시키는 방법인 Backpropagation 중, Gradient 항이 사라지는 문제이다. Backpropagation 학습식을 보면 Cost Function의 Gradient 항이 존재한다. 이 항이 0이나 0에 가까워져 학습이 불가능해지는 현상을 말하는 것이다. 왜 gradient 항이 사라지는 현상이 발생할까? 이는 우리가 Activation Function으로 Sigmoid Function을 사용했기 때문이다. Sigmoid Function에 대해 자세히 살펴보자. Sigmoid Function의 도함수를 살펴보면 최대값이 0.25 인 것을 알 수 있다. 다시 말해, Sigmoid Function를 사용한다면, 망이 깊어..
Backpropagation은 구현이 매우 어렵기 때문에 버그가 발생해도 어디서부터 고쳐야 할지가 마땅치 않다. 이 때, gradient checking을 사용한다. gradient checking은 역전파 알고리즘이 얼마나 정확하게 구현되었는지 수동으로 검증하는 방법이다. 즉, 기울기에 대한 근사치를 구해서 비교하여 검증하는 방법이다. e(엡실론) 이 매우 작다 가정하고, θ-e 와 θ+e 두 점 사이의 기울기를 구한다. 우리는 θ가 하나가 아니기 때문에, 각각의 θ(theta)에 대한 gradient 를 모두 구해야한다. 이후, gradient checking 을 이용해 구한 gradApprox 와 실제 역전파를 이용해 구한 Dvec가 비슷한지 검사한다. 2개의 벡터가 비슷한지는 어떻게 계산할까? 2..