5장: 머신 러닝의 기본 요소
5.1 일반화: 머신 러닝의 목표
- 머신러닝의 근본적인 이슈는 최적화와 일반화이다.
- 최적화란? 가능한 훈련 데이터에서 최고의 성능을 얻으려고 모델을 조정하는 것
- 일반화란? 훈련된 모델이 이전에 본 적 없는 데이터에서 얼마나 잘 수행되는지
- 만약 훈련이 너무 잘 맞으면 과대적합이 되고 일반화 성능이 나빠짐
- 과대적합은? 데이터에 잡음이 있거나, 불확실성이 존재하거나 드문 특성이 포함되어 있을 때 특히 발생할 가능성이 높다.
- 잡음 섞긴 훈련 데이터: 이상치에 맞추려면 일반화 성능이 안좋아짐
- 불확실성: 객관적인 경계가 없고 동일한 측정값에도 다른 결과값이 나오는 현상
- 드문 특성: 특성이 모델에 유익한지 또는 모델을 혼란스럽게 만드는지 확실하지 않다면 훈련 전에 특성 선택 수행. 특성과 레이블 사이의 상호 의존 정보가 유익한지 확인. ex)임계값
- 딥러닝에서 일반화의 본질은 딥러닝 모델 자체와 거의 관련이 없고 실제 세상의 정보 구조와 많은 관련이 있다.
- 매니폴드란? 국부적으로는 선형(유클리드) 공간과 비슷하게 보이는 부모 공간의 저차원 부분 공간 ex) 3D 공간상의 매끄로운 표면은 2D 매니폴드임
- 매니폴드 가설: 실제 세상의 모든 데이터가 고차원 공간 안에 있는 저차원 매니폴드에 놓여 있다.
- 잠재 매니폴드를 학습하면 두 입력 사이를 보간하는 것이 항상 가능하다.
- 하지만 보간이 일반화의 전부라고 가정하는 것은 실수다. 지역 일반화다.
- 딥러닝 모델은 종이 공을 펼치는 도구다. 잠재 매니폴드를 풀기 위한 도구라고도 한다.
- 딥러닝 모델은 매끄롭고 연속적인 매핑(미분가능)을 구현하고 구조화되는 경향있음
- 데이터 선별? 특성이 유익하고, 잡음이 적을수록 일반화가 잘된다. 데이터 큐레이션과 특성 공학이 필수!
- 가장 좋은 방법은 더 좋고 더 많은 데이터에서 훈련하는 것임
- 과대적합과 싸우는 것을 규제라고 한다.
5.2 머신 러닝 모델 평가
- 훈련, 검증, 테스트 데이터로 나누는 이유: 훈련데이터를 통해 학습하고 검증 데이터 결과를 통해서 파라미터 설정을 튜닝하기 때문에 검증 데이터도 일종의 학습임.
- 단순 홀드아웃 검증? 훈련, 검증, 테스트로 나누어야함. 일반적인 방법임. 데이터 적을시 별로
- k-겹 교차 검증? 모델 성능이 데이터 분할에 따라 편차가 클 때 도움이 됨
- 셔플링 이용한 반복 k-겹 교차 검증? 데이터가 적고 가능한 정확하게 평가할려고 할때 유용
- 데이터셋으로 작업을 시작하기 전에 항상 넘어야 할 간단한 기준점을 정해야한다~~
- 모델 평가시 유의할 점
- 대표성 있는 데이터: 무작위성이 있어야함
- 시간의 방향: 무작위성이 있으면 안됨
- 데이터 중복: 훈련 세트와 검증 세트에 중복되는 것이 있으면 안된다.
5.3 훈련 성능 향상하기
- 일단 일반화 성능 향상 및 최적화를 이야기를 하기 위해 모델을 일부러 성능을 악화시킨다!! 즉, 약간의 일반화가 되고 과대적합이 되는 모델을 만듦.
- 옵티마이저 선택, 모델 가중치의 초깃값 분포, 학습률, 배치 크기 등은 상호 의존적이다. 일반적으로 학습률과 배치 크기를 튜닝하는 것으로 충분하다.
- 학습률: 학습률이 너무 크면 값이 수렴하지 못하고 발산하는 경우가 있고 학습률이 너무 작으면 수렴 속도가 저하되며 local minimum에서 벗어나지 못하는 상황이 생길 수 있음
- 모델이 일반화 되지 않는 원인:
- 입력 데이터에 타깃 예측을 위한 정보가 충분하지 않을 수 있음
- 모델의 종류가 문제에 적합하지 않을 수 있음
- 일반화 능력이 어느정도 당설하면 과대적합 시켜야함
- 모델이 과대적합 할 수 없는 것처럼 보인 경우는 모델의 표현 능력이 부족한 것이다.
- 해결책: 용량이 더 큰 모델 ex) 층을 추가, 층의 크기 증가, 더 적합한 종류의 층 선택
- 모델 층이 너무 많아지면 생기는 문제: Vanising Gradient가 발생(기울기 소실)
5.4 일반화 성능 향상하기
- 데이터 큐레이션이란? 적절한 데이터셋으로 작업하고 있는지 확인하는 것 ex) EDA
- 데이터가 충분한가? 확인
- 데이터에 이상치가 있는가? 확인
- 데이터 정제와 누락된 값 확인
- 데이터 선택하기
- 특성 공학이란? 하드코딩된 변환을 적용하여 알고리즘이 더 잘 수행되도록 만드는것, 특성을 더 간단한 방식으로 표현하여 문제를 더 쉽게 만든다. 잠재 매니폴드를 더 매끄럽고, 간단하고, 구조적으로 만든다.
- 좋은 특성은 적은 차원을 사용하여 문제를 더 멋지게 풀어내고 더 적은 데이터로 문제를 풀 수 있다.
- 조기 종료? 일반화 성능이 가장 높은 정확한 최적적합의 지점을 찾는 것 층의 에포크가 끝날 때마다 모델을 저저아하고 최상의 에포크를 찾은 후 저장된 모델을 재사용 ex) patience = 3을 주고 14에폭에서 멈췄다. 그럼 몇번째가 best model인가? 정답: 11
- 모델 규제? 모델의 검증 점수를 향상시키는 것이 목적. 모델을 더 간단하게 평범하게 만듬 모델 층이나 유닛 개수를 조절 (적은 파라미터에서 점점 늘려가는 형식으로 진행)
- 가중치 규제? 가중치 값의 분포가 더 균일하게 분포 ex) L1규제(절대값), L2규제(제곱)
- 가중치 규제는 어디에서 이루어지는가? 입력 데이터와 가중치를 곱하고 편항을 더하고 정답값과의 손실함수를 계산한 뒤에 이루어진다. (CS231 참고)
- 드롭아웃 규제? 층의 출력 값에 노이즈를 추가하여 중요하지 않은 우연한 패턴을 깨뜨림
- 배치 정규화? 미니 배치 단위로 입력 데이터의 평균을 0으로 만들고, 분산을 1로 조정 장점: 기울기 소실 및 폭주 문제 완화, 학습 속도 향상, 일반화 능력 상승
- 일반화 선응 극대화하고 과대적합을 방지하기 위해 널리 사용하는 방식
- 훈련 데이터를 더 모은다. 혹은 더 나은 데이터를 모은다.
- 더 나은 특성을 개발한다.
- 네트워크의 용량을 감소한다.
- 가중치 규제를 추가한다.
- 드롭아웃을 추가한다
'IT' 카테고리의 다른 글
[케라스 창시자에게 배우는 딥러닝 2판] 4, 5일차(7장) (0) | 2023.06.26 |
---|---|
[케라스 창시자에게 배우는 딥러닝 2판] 2일차(3장) (0) | 2023.05.29 |
[케라스 창시자에게 배우는 딥러닝 2판] 1일차(2장) (0) | 2023.05.29 |
[밑바닥부터 시작하는 딥러닝] Intro (1) | 2023.04.14 |