250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- BOJ
- 15649
- 4948
- streamlit
- 그리디 알고리즘
- 백준
- n과 m
- 경사하강법
- 기계학습
- 파이썬
- 개발환경
- 밑바닥부터 시작하는 딥러닝
- 1101
- 백트래킹
- 1002
- 신경망 학습
- 실버
- 설정
- 9020
- end to end
- 재귀
- pyenv
- 가상환경
- Python
- 손실함수
- N-Queen
- Mac
- 파이싼
Archives
- Today
- Total
파이톨치
[끄적끄적] CNN의 역전파 본문
728x90
최근 Grad-CAM에 대해 공부하면서 의문점이 생긴 것이 있어 정리한다.
CNN 같은 경우에 역전파가 어떻게 진행되는지이다. 생각해보면 cnn의 경우 가중치를 공유하는 형태가 될 것이다.
스트라이드가 진행되면서 커널을 공유한다. 그렇다면 학습은 어떻게 할까?
PyTorch의 CNN(Convolutional Neural Network)에서 커널(kernel)도 학습 가능한 파라미터입니다.
커널의 값은 네트워크의 학습 과정에서 업데이트되는 가중치로 간주됩니다. 따라서 커널 자체가 학습의 대상입니다. 커널과 연결된 "가중치"만 학습되는 것이 아니라, 커널의 값(필터 값)도 학습을 통해 최적화됩니다.
CNN에서 커널의 역할
- 커널(필터): CNN에서 커널은 필터로도 불리며, 이미지나 입력 데이터의 특정한 패턴을 감지하는 작은 행렬입니다. 예를 들어, 3x3 커널은 3x3 행렬로 표현됩니다.
- 학습 가능 파라미터: 커널의 각 요소는 학습 가능한 파라미터입니다. 모델이 훈련되는 동안, 역전파(backpropagation)를 통해 이 값들이 업데이트됩니다.
CNN에서 1차원 입력 데이터를 사용하는 간단한 예제를 통해 커널이 어떻게 학습되는지 살펴보겠습니다. 여기서는 커널의 채널 수를 1로 설정하여 단순화합니다.
모델 구성
- 입력 데이터(feature): 길이 5의 1차원 벡터
- 커널 크기(kernel size): 3
- 스트라이드(stride): 1
- 출력 채널(output channels): 3 (즉, 3개의 1차원 커널)
- 커널 채널 수: 1 (단순화)
커널에 대한 출력 계산
손실(Loss) 계산
예를 들어, MSE(Mean Squared Error) 손실을 사용한다고 가정합니다:
여기서 O는 모델의 예측 출력이고, Y는 실제 값입니다.
커널의 각 요소에 대한 그라디언트는 다음과 같습니다:
계산된 그라디언트를 사용하여 각 커널의 가중치를 업데이트합니다. 예를 들어, 학습률 η를 사용하여:
결과적으로 커널에 대한 값이 업데이트 되게 됩니다.
728x90
'AI&ML > BoostCamp AI Tech' 카테고리의 다른 글
[BosstCamp AI Tech] 3D 모델 [작성 중] (0) | 2024.09.06 |
---|---|
[BoostCamp AI Tech] CLIP 개념부터 코드까지 살펴보기 (0) | 2024.09.05 |
[BoostCamp AI Tech] CNN 시각화 (0) | 2024.08.29 |
[BoostCamp AI Tech] Computer Vison Overview (4) | 2024.08.27 |
[BoostCamp AI Tech] 데이터 시각화 (0) | 2024.08.22 |