윤준호 저
딥러닝에 대한 도서를 접하고 싶어 도서관에 갔는데 원하던 책이 없어 대신 고르게 된 책이었다. 아직 머신러닝과 딥러닝, 인공지능에 대한 정확한 개념을 알지 못하여 관련 개념에 입문을 할 도서를 찾던 도중 쉽고 이해가 잘 되게 설명한 이 책을 선택해 읽게 되었다.
머신러닝 모델의 학습
정답을 치워둔다.
데이터를 바탕으로 예측을 한다.
기계가 한 예측(가설)과 실제 레이블을 비교한다.
틀린 예측들에 대해서 예측 방향을 실제 레이블에 가까워지도록 수정한다.
이 과정을 반복한다.
2. 회귀(regression) vs 분류(classification) / 비지도 학습 vs 지도 학습
예측 값이 연속 값: 회귀
예측 값이 이산 값: 분류
데이터에 레이블이 있음: 지도 학습
데이터에 레이블이 없음: 비지도 학습
3. 선형 회귀
ex) 집의 가격 예측하기:
집의 가격을 결정하는 특성들이 각각의 가중치와 함께 곱해지고, 편향이 더해지면 값이 예측된다. 이때 계산된 값이 위치하는 노드는 '새로운 특성'으로 해석할 수 있다.
오차 = (데이터 1의 x값을 회귀직선에 넣었을 때 나오는 예측 y값) - (데이터1의 실제 y값)
비용 = 전체 오차들을 각각 제곱한 후 합한 것
비용이 낮은 모델이 더 예측력이 좋다.
4. 비선형 변환의 필요성
- 선형 변환의 특성 상 은닉층을 깊게 쌓아도 하나의 층으로 표현할 수 있기에 모델이 심층적인 학습을 할 수 있게 하려는 목적은 달성되지 못한다. 따라서 이전 층의 선형결합을 통해 새로운 특성이 만들어질 때마다, 그 값을 다음 층으로 전달하기 전에 비선형 변환을 시켜줘야 한다.
비선형 변환 함수: 시그모이드(sigmoid), 렐루(ReLU)
5. 신경망 기초 - 가중치행렬
6. 신경망 학습 - 경사하강법
모델이 더 예측을 잘 하는 방향으로 가중치를 업데이트하는 과정
새로운 가중치 = (원래 가중치) - 0.01(학습률) * (기울기)
모든 가중치 변수들을 한꺼번에 미분해서 기울기를 계산하는 것이 아니라, 각각 편미분을 통해 아주 간단하게 기울기를 계산하고 업데이트 하는 식으로 학습을 진행한다. 이렇게 기울기를 계산하여 최솟값으로 향하는 방법이 경사하강법(gradient descent)이다.
7. 신경망 학습 - 순전파로 예측하기/ 역전파로 예측하기
모델이 "데이터"를 입력으로 받아 층별로 계산을 한 뒤 "예측"값을 내놓는 과정까지를 순전파(forward propagation)라고 한다.
그 예측과 정답과의 거리를 계산하고 평균을 내 "비용"으로 계산한 뒤, 모델이 더 좋은 예측을 할 수 있는 방향으로(비용이 적어지는 방향으로)가중치들을 업데이트하는 과정을 역전파(backpropagation)라고 한다.
역전파는 마지막 층부터 왼쪽으로 가면서 만나는 가중치들에게 각각 "너는 얼마나 비용의 증가에 기여했는지"를 따져서 그 반대 방향으로 업데이트시켜준다.
8. 소프트맥스와 크로스 엔트로피
소프트맥스: 예측값들을 해당 클래스의 확률값으로 바꿔주는 함수
크로스엔트로피: 모델에서 예측한 확률값이 실제값과 비교했을 때 틀릴 수 있는 정보량 '정답'과 '예측값' 사이에서 얼마나 차이가 발생하는지(정보가 발생하는지)를 계산한다.클래스별로 정답과 예측(확률값)의 차이를 계산하고 전부 더해서 오차를 계산한다. 정답의 분포와 예측의 분포의 차이를 줄여나가기 위해 그 오차를 계산하는 방법이다.
9. 오버피팅 문제
오버피팅(과적합): 모델이 데이터셋에 너무 피팅되어서 데이터셋과 조금만 다른 데이터가 들어와도 예측을 잘 못하는 경우
오버피팅을 피하고 일반화된 모델을 만들 수 있는 학습방법
1. 데이터셋 분할 - 수집된 데이터셋 중 20%를 따로 떼어내 시험 데이터셋으로 두고 나머지 80%의 데이터셋을 훈련 데이터셋이라 하는데 훈련 데이터셋만 가지고 학습을 진행한다. 학습이 끝난 후 시험 데이터셋으로 모델의 일반화 성능을 테스트한다.
2. 데이터 증강 - 이미지를 모델에 넣기 전에 인위적인 필터들을 사용해 무작위로 변형시킨다.
3.일반화 항 추가
4. 드롭아웃 - 학습을 진행할 떄 무작위로 지정된 층에 있는 몇 개의 노드를 누락
10. 신경곱(CNN)
Kommentare