3장 신경망
퍼셉트론으로 '이론상' 컴퓨터의 모든 복잡한 함수를 표현할 수 있지만 가중치는 수동으로 정해야 한다는 한계를 알려주면서 장을 시작한다.
이 한계를 위한 '신경망'이 있으니
신경망 (NN, Neural Network) : 입력층, 은닉층, 출력증으로 구성돼 있으며, 작동 방식은 퍼셉트론과 유사하다. 가중치를 활성화 함수 (activation function)로 구현하는 것을 제외하면!
활성화 함수 : 두 입력 신호, 두 가중치 + 편향값을 계산해서 0 혹은 1을 출력하는 함수
대표적인 활성화 함수
- 시그모이드 함수 (Sigmoid Function) : 비선형적인 함수로 신경망의 활성화 함수로 자주 사용된다.
- 계단 함수 (Step Fnction) : 비선형적인 함수로 입력값에 따라 0 아니면 1을 출력하는 함수이다. 퍼셉트론이 이 함수를 사용한다고 할 수 있다. (헤비사이드 함수도 생각이 난다.)
- 렐루 함수 (ReLU Function) : 입력값이 0 이하면 0을 출력, 0 이상이면 입력값을 그래도 출력하는 함수이다. 역시 비선형적인 함수이다.
위에 3개 함수를 구현하고 시각화하는 코드를 만들었다. 그리고 비선형 함수가 딥러닝에서 왜 중요한 역할을 하는지 알려준다. (p.75)
넘파이 클래스를 사용해 다차원 배열의 계산 구현 (p.77)
3층 신경망 구현하기 (p.83)
출력층 설계하기 (p.90)
- 신경망은 분류와 회귀가 있다는 매우 중요한 개념을 시작.
- 회귀에는 항등 함수를, 분류에는 소프트맥스 함수를 (보통) 사용한다.
- 항등 함수(identity function)과 소프트맥스 함수(softmax function)식을 알아보고 구현도 해봤다.
손글씨 숫자 인식 (p.96)
- 학습과정은 생략하고, 미리 학습시킨 매개변수를 사용하여 추론 과정(이 과정을 순전파 (forward propagation)이라 한다.)만 구현하는 장! 매우 중요!
- MNIST 데이터셋을 내려받아 넘파이 배열로 변경, 데이터를 레이블 형식으로 변경, 레이블을 원-핫 인코딩(one-hot encoding) 형태로 저장!
- 추론으로 정확도(accuracy)를 구해서 모델을 평가해보고, 전처리(pre-processing), 정규화(normaliztion) 개념을 짚고 넘어간다.
- 배치(batch)로 데이터 묶는 방법도 배우고 구현합니다.