20220711
* 밑바닥부터 시작하는 딥러닝
overfitting을 피하기 위해
└가중치 감소 : 큰 가중치에 대해서는 큰 패널티를 부가하여 오버피팅 억제
└Drop out : 뉴런을 임의로 삭제하면서 훈련.
* CNN
1. 전체 구조
└합성곱 계층(convolution layer)과 풀링 계층(pooling layer)으로 나뉨.
└기존에는 affine layer를 사용했지만, 이는 데이터의 형상이 무시된다는 단점이 존재. (3차원 데이터를 1차원으로 평탄화 해줘야 하기 때문에)
└합성곱 계층은 이 3차원 형상을 유지.
└입력 데이터 : 입력 특징 맵(input featuer map), 출력 데이터 : 출력 특징 맵(output feature map)
└입력 데이터에 필터 적용 후 + 편향 = 출력 데이터
└padding : 합성곱 연산을 수행하기 전 입력 데이터 주변을 특정 값(ex. 0)으로 채우는 기법
└주로 출력 크기를 조정할 목적으로 사용. padding이 커질수록 출력 크기도 커짐
└stride : 필터를 적용하는 위치의 간격. stride를 키우면 출력의 크기가 작아짐
2. pooling layer
└가로세로 방향의 공간을 줄이는 연산.
└max pooling : 최댓값을 구하는 연산
└일반적으로 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 보통
└average pooling : 대상 영역의 평균을 계산
└특징 : 1. 학습해야 할 매개 변수가 없음
2. 채널 수가 변하지 않음. 입력 데이터의 채널 수를 그대로 출력 데이터로 내보낸 다. 채널마다 독립적으로 계산하기 때문.
3. 입력의 변화에 영향을 적게 받는다.
Affine 계층 : 행렬을 곱할 때 곱하는 행렬 사이 차수가 같은 상태를 의미. 7x8 행렬과 3x2행렬은 차수가 달라 서로 곱할 수 없어 Affine이 아니라 하고, 7x8 행렬과 8x3 행렬은 서로 차수가 같아 곱할 수 있는 상태여서 Affine 상태이다.
신경망의 학습 순서 :
└1. 미니배치 : 훈련 데이터 중에서 무작위로 다수의 데이터를 골라낸다.
└2. 기울기 계산 : 오차역전파로 각 가중치 매개변수에 대한 손실함수의 기울기를 구한다.
└3. 매개변수 갱신 : 기울기를 사용하여 가중치 매개변수를 갱신한다.
└4. 반복