열심히 코딩 하숭!
4. 예측 함수 정의하기 | 파이토치 딥러닝 프로그래밍 본문
04 예측 함수 정의하기
4.1 머신러닝 알고리의 전체상과 예측함수
- 경사 하강법의 구현 개요
- 예측 계산 → 손실 계산 → 경사 계산 → 파라미터 수정
- 예측 계산: 입력으로부터 출력을 계산함l
- 손실 계산: 정답과 출력간의 오차를 계산함
- 경사 계산: 손실 함수를 미분하여 경사값을 구함
- 파라미터 수정: 경사값을 활용해 손실을 최소화시키는 W와 B를 반복 수정함
- 예측 함수 구성
- 레이어 함수 여러 층을 조합해서 예측 함수를 구성한다
- 레이어 함수: 선형 함수, ReLU 함수 등
4.2 신경망의 개념과 파이토치 프로그래밍 모델의 관계
- 신경망과 파이토치 프로그램의 대응 관계
💡 헷갈리는 부분: 선형 함수의 자리와 비선형 함수의 자리가 고정되어야 하는지?
|
4.3 파이토치 프로그래밍에 필요한 용어 정의
- 레이어 함수
- 텐서를 입력으로 받고 계산 후 출력함
- 머신러닝 모델은 여러 레이어 함수들을 조합해서 제작
함수명 | 파라미터 유무 | 명칭 | 장 | 모델 종류 |
nn.Linear | O | 선형 함수 | 5 | 회귀 |
nn.Sigmoid | X | 시그모이드 함수 | 6 | 이진 분류 |
nn.LogSoftmax | X | 소프트맥스 함수 + 로그 함수 | 7 | 다중 분류 |
nn.ReLU | X | ReLU 함수 | 8 | 숫자 인식 |
nn.Conv2d | O | 컨볼루션 함수 | 9 | 이미지 인식 |
nn.MaxPool2d | X | 풀링 함수 | 이미지 인식 | |
nn.Flatten | X | 1계화 함수 | 이미지 인식 | |
nn.Dropout | X | 드롭 아웃 함수 | 10 | 이미지 인식 |
nn.BatchNorm2d | O | 배치 규격화 함수 | 이미지 인식 | |
nn.AdaptiveAvgPool2d | X | 적응형 평균 풀링 함수 | 11 | 사전 학습 모델 |
- ReLU 함수와 같은 활성화함수는 레이어 함수로 정의하고 있지 않지만, 이 책에서는 그냥 레이어함수랑 같은 부류로 취급한다고 함!
2. 파라미터
- 레이어 함수 내부에서 가지고 있는 입력 텐서 이외의 데이터!
- 학습을 통해 레이어 함수의 파라미터 값을 조정함
- 위의 표에서는 ‘선형함수, 컨볼루션 함수, 배치 규격화 함수’만 파라미터를 가짐
3. 입력 텐서 / 출력 텐서
4. 머신러닝 모델
- 여러 개의 레이어 함수를 조합해 입력 텐서에 대해 바람직한 출력 텐서를 출력
5. 학습
- 레이어 함수 내부의 파라미터 값을 조정하는 행위
4.4 예측 함수의 내부 구조
- 예측 함수의 간략한 구현
- 주의 은닉층의 노드의 수를 맞춰주어야 한다
- 주의 입력과 출력도 데이터의 특성에 숫자를 맞추어야 한다
## 레이어 함수 정의 ##
l1 = nn.Linear(784, 128) # 128은 은닉층의 노드 수
l2 = nn.Linear(128, 10) # 128은 은닉층의 노드 수
relu = nn.ReLU(inplace=True)
## 입력 텐서 -> 출력 텐서 계산 ##
[inputs = torch.randn(100, 784)
m1 = l1(inputs)
m2 = relu(m1)
outputs = l2(m2)
2. 직렬로 이어지는 합성 함수 → nn.Sequential 로 간결하게 표현
net2 = nn.Sequential(
l1,
relu,
l2)
outputs2 = net2(inputs)
4.5 외부에서 본 예측 함수의 거동
pass
4.6 파이토치 머신러닝 프로그램의 전체상
전체적인 구조
(1) 예측 함수
(2) 손실 함수
(3) 최적화 함수
반복 처리
① 예측 계산
② 손실 계산
③ 경사 계산
④ 파라미터 수정
4.7 활성화 함수의 목적
- 활성화 함수 사용 이유
- 선형함수 3개로 이루어진 예측 모델의 은닉층에 활성화 함수가 추가되지 않으면 비선형 예측이 불가함
- (단순히 선형 함수를 합성해 놓기만 하면, 결국 한 개 층의 선형 함수와 같다)
'프로그래밍 책 > 파이토치 딥러닝 프로그래밍' 카테고리의 다른 글
9. CNN을 활용한 이미지 인식 | 파이토치 딥러닝 프로그래밍 (1) | 2024.04.21 |
---|---|
8. MNIST를 활용한 숫자 인식 | 파이토치 딥러닝 프로그래밍 (1) | 2024.04.21 |
3. 처음 시작하는 머신러닝 | 파이토치 딥러닝 프로그래밍 (0) | 2024.04.17 |
2. 파이토치의 기본 기능 | 파이토치 딥러닝 프로그래밍 (0) | 2024.04.16 |
1. 딥러닝에 꼭 필요한 파이썬의 개념 | 파이토치 딥러닝 프로그래밍 (0) | 2024.04.15 |