3장의 3.5부터 시작!
1. 출력층 설계
신경망은 활성화 함수에 따라서 분류와 회귀에 사용할 수 있다.
분류에서는 softmax, 회귀에서는 identify_func를 사용한다.
2. 활성화 함수 구현하기
- identify_func
말그대로 항등함수
- softmax func
카테고리별로 합이 1인 확률을 구할 수 있다. 그리고 exp가 단조 증가 함수이기때문에 소프트맥스 함수를 적용해도 원소간의 대소 관계는 변하지 않는다.
(주의점: 지수함수를 사용하여 아주 큰 값을 뱉기때문에 오버플로 문제가 발생할 수 있다. 그래서 이를 막기위해 입력 신호 중 최댓값을 이용한다. )
최대값을 이용하면 큰 숫자들이 작아져서 비율은 같지만 오버플로문제를 방지할 수 있게 된다.
실전 정보: 학습에서는 소프트맥스를 사용하지만, 실제 inference(forward propagation)에서는 소프트맥스를 사용하지 않는다. 단조 증가 함수라서 결과는 같지만 지수함수 계산에 시간이 걸리기 때문이다.
3. 출력층의 뉴런 수 정하기
분류하고 싶은 수 만큼 정한다. 예를 들어서 0 ~ 9을 위해 10개를 쓴다.
4. 손글씨 숫자 인식
dataset = mnist, train_set은 6만장, test_set은 만장
원래는 교재의 데이터 로드 함수를 사용해야하지만 그 과정이 너무나 귀찮아서 sklearn.datasets을 사용하여 불러왔다. 그런데, 데이터가 판다스의 데이터프레임 형태로 되어있어서 교재의 데이터와 동일하게 만들어주기 위해서 to_numpy메소드를 통해 1차원 넘파이 배열로 만들어주었다.
1차원 넘파이 배열을 28x28 배열로 다시 만들어주어야 이미지를 표현할 수 있다.
5. 신경망의 추론 처리
입력층 뉴런은 784개, 출력층 뉴런은 10개로 한다. 이미지가 1차원으로 바뀌면 784로 바뀌기 때문이다.
get_data -> init_network -> predict -> accuracy 측정
사진 5. sklearn.preprocessing의 normalize
Normalization is the process of scaling individual samples to have unit norm. This process can be useful if you plan to use a quadratic form such as the dot-product or any other kernel to quantify the similarity of any pair of samples.
norm은 벡터의 크기를 나타낸다. 종류로는 L1, L2, max가 있다.
L1: 벡터의 원소를 절댓값으로 바꿔서 크기를 구해준다. 맨해튼 거리라고도 한다.
L2: 벡터와 원점간의 거리를 구하여 크기를 구해준다. euclidean 거리라고도 한다.
max: 원소 중 절댓값이 가장 큰 원소
위 사진을 보면 max norm처럼 제일 큰 255 화소로 나눠서 정규화한 것을 확인할 수 있다.
여기서는 오버플로를 막기 위해서 정규화라는 전처리를 사용하였는데 현업에서는 whitening을 통해 균일하게 분포시키기도 하고 0을 중심으로 분포시키는 방법을 사용한다고 한다.
6. 배치처리
그림과 같이 784 -> 784x50 -> 50x100 -> 100x10 -> 10 으로 출력층의 뉴런이 10개인 것을 확인할 수 있다.
이를 한번에 100개의 이미지를 넣으면 100x784 -> 784x50 -> 50x100 -> 100x10 -> 100x10로 100개에 대한 라벨 값을 얻을 수 있다. 이때 gpu를 사용하여 더 빠른 연산이 가능하다.
tip. np.argmax는 최댓값의 인덱스를 가져온다.
'이제는 사용하지 않는 공부방 > Artificial intelligence' 카테고리의 다른 글
[추천시스템] 컨텐츠 기반 모델 word2vec ( cbow, skip-gram ) (0) | 2021.04.26 |
---|---|
[밑바닥부터 시작하는 딥러닝] 4강 신경망 학습 핵심정리 (0) | 2021.04.25 |
[추천시스템] 컨텐츠 기반 추천시스템 TF-IDF (0) | 2021.04.19 |
[fast ai] chapter9_tabular modeling (0) | 2021.04.18 |
[fast ai] production (deep learning course 2) (1) | 2021.01.18 |