전체 글
-
CNN 구현, 시각화AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 15:11
- 사진은 간단한 CNN 네트워크 예시로, Convolution-ReLU-Pooling-Affine-ReLU-Affine-Softmax 순으로 흐른다. import sys, ossys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정import pickleimport numpy as npfrom collections import OrderedDictfrom common.layers import *from common.gradient import numerical_gradientclass SimpleConvNet: def __init__(self, input_dim=(1, 28, 28), conv_param={'filter_nu..
-
CNN 풀링 계층AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 15:04
풀링은 세로, 가로 방향의 공간을 줄이는 연산이다. - 위의 사진은 2X2 최대 풀링(max pooling)을 스트라이드 2로 처리하는 순서이다. - 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통이다. - 평균 풀링(average pooling)도 있는데, 대상 영역의 평균을 계산하는 연산이다. 풀링 계층의 특징1. 학습해야 할 매개변수가 없다.2. 채널 수가 변하지 않는다. - 채널마다 독립적으로 계산하기 때문에, 입력 데이터의 채널 수 그대로 출력 데이터로 내보낸다. 3. 입력의 변화에 영향을 적게 받는다(강건하다). - 입력 데이터가 조금 변해도 풀링의 결과는 잘 변화하지 않는다. 합성곱 연산의 필터 처리 상세 과정- 필터를 세로로 1열로 전개하고, im2col이 전개한 데이터..
-
CNN 합성곱 계층AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 14:58
- CNN(Convolution Neural Network)은 합성곱(Convolution) 연산을 사용하는 ANN(Artificial Neural Network)의 한 종류다. - 합성곱(Convolution)을 활용하면 데이터의 형상을 유지할 수 있다(Affine계층에서는 1차원 데이터로 평탄화시켰다.). 즉, 3차원 속에서 의미를 갖는 본질적인 패턴을 고려할 수 있다. - 이미지 인식과 음성 인식 등 다양한 곳에서 사용된다. 특히 이미지 분야에서 딥러닝을 활용한 기법은 거의 다 CNN이 기초이다. 합성곱 연산- 합성곱 연산은 필터의 window를 일정 간격으로 이동해가며 입력 데이터에 적용한다. - 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구한다(fused multiply-add, FM..
-
학습 관련 기술 정리AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 14:38
오버피팅- 신경망이 훈련 데이터에만 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태 - 오버피팅은 주로 1. 매개변수가 많고 표현력이 높은 모델일 때, 2. 훈련 데이터가 적을 때 나타난다.드롭아웃- 뉴런을 임의로 삭제하면서 학습하는 방법이다. - 훈련 때 은닉층의 뉴런을 무작위로 골라 삭제한다. 삭제된 뉴런은 신호를 전달하지 않게 된다. - 시험 때는 모든 뉴런에 신호를 전달한다. 단, 뉴런의 출력에 훈련 때 삭제 안 한 비율을 곱하여 출력한다. 적절한 하이퍼파라미터 값 찾기 각 층의 뉴런 수, 배치 크기, 학습률, 가중치 감소 등 신경망에는 여러개의 하이퍼파라미터가 등장한다. 이러한 하이퍼파라미터의 값을 적절히 설정하는 것은 모델의 성능에 큰 영향을 미친다. 하지만 그 값을 결정..
-
배치 정규화AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 14:17
- 배치 정규화(Batch Normalization): 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것 배치 정규화 알고리즘- 배치 정규화는 학습 시 데이터 분포가 평균이 0, 분산이 1이 되도록 미니배치를 단위로 정규화한다.배치 정규화의 장점1. 학습을 빨리 진행할 수 있다.(학습 속도 개선) 2. 초깃값에 크게 의존하지 않는다. 3. 오버피팅을 억제한다. (드롭아웃 등의 필요성 감소) MNIST 데이터셋을 사용한 배치 정규화 계층 사용에 따른 학습진도 차이- 실선이 배치 정규화를 사용한 경우 ,점선이 사용하지 않은 경우이다. - 거의 모든 경우에서 배치 정규화를 사용할 때의 학습 진도가 빠르다.
-
가중치의 초깃값AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 14:12
초깃값을 0으로 하면?- 가중치 감소(weight decay): 가중치 매개변수의 값이 작아지도록 학습하는 방법으로, 가중치 값을 작게 하여 오버피팅이 일어나지 않게 한다. - 가중치를 모두 0같은 균일한 값으로 설정하면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되어 버린다. 그러므로 가중치 초깃값은 무작위로 설정해야 한다. 은닉층의 활성화값 분포- 활성화함수로 시그모이드를 사용하는 5층 신경망에 가중치의 표준편차를 바꿔가며 활성화값(활성화함수 출력 데이터)을 관찰 - 가중치의 표준편차가 1일때, 각 층의 활성화값이 0과 1에 분포되었다. 출력이 0에 가까워지면 그 미분은 0에 다가간다. - 기울기 소실(gradient vanishing): 데이터가 0과 1에 치우쳐 분포하면 역전파의 기울기 ..
-
매개변수 갱신AI/밑바닥부터 시작하는 딥러닝 2024. 7. 13. 14:06
매개변수 갱신 신경망 학습의 목적은 매개변수의 최적값을 찾는 문제(손실함수의 값을 가능한 한 낮추는 매개변수를 찾는 것)이다. 이러한 문제를 푸는 것을 최적화(optimization)이라 한다. 확률적 경사 하강법(SGD: Stochastic Gradient descent)- SGD는 단순하고 구현도 쉽지만, 문제에 따라서 비효율적일 때가 있다. - 비등방성(anisotropy)함수(방향에 따라 기울기가 달라지는 함수)에서는 탐색 경로가 비효율적이다. 코드class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads): for key in params.keys(): ..
-
역전파(Backpropagation)AI/밑바닥부터 시작하는 딥러닝 2024. 6. 12. 11:57
덧셈, 곱셈 역전파덧셈, 곱셈 역전파 문제풀이(p.160)ReLU, Sigmoid 역전파Affine 역전파 배치용 Affine 역전파 Softmax-with-Loss 역전파(간소화) - Softmax는 입력값을 정규화(출력의 합이 1이 되도록)하여 출력한다. - 신경망에서 수행하는 작업은 학습, 추론이 있다. 추론에서 답을 하나만 내는 경우에는 가장 높은 점수만 알면 되어서 Softmax 계층은 필요 없지만, 학습할 때는 필요하다. - y는 Softmax 계층의 출력이고, t는 정답 레이블(One-Hot Encoding)이므로 역전파는 Softmax 계층의 출력과 정답 레이블의 차분이다. (역전파가 깔끔하게 떨어지는 이유는 Cross Entropy Error 함수가 그렇게 설계되었기 때문이다! 회귀의 출..