실제로 어떻게 작동하는지 모름
이를 알면 적절한 모델, 올바른 훈련 알고리즘, 작업에 맞는 좋은 하이퍼파라미터를 빠르게 찾을 수 있음
작동 원리를 이해하면 디버깅, 에러를 효율적으로 분석하는 데 도움이 됨
가장 간단한 모델인 선형 회귀
훈련 시키는 방법
way1 : 직접 계산할 수 있는 공식을 사용해 훈련 세트에 가장 잘 맞는 모델 파라미터 해석적으로 구함
way2 : 경사 하강법이라 불리는 반복적인 최적화 방식 사용해 모델 파라미터를 조금씩 바꾸면서 비용함수를 훈련 세트에 대해 최소화함
결국 동일한 파라미터로 수렴
ex) 배치 경사 하강법, 미니배치 경사 하강법, 확률적 경사 하강법(SGD; stochastic)
그 다음 다항회귀, 학습 곡선, 과대적합 감소시키는 규제 기법 알아보기
4.1 선형 회귀
y 헷
η : 에타 아홉번째 그리스 문자 8를 의미
학습률
θ : 세타 여덟번째 그리스 문자 9를 의미
파라미터
4.1.1 정규방정식
비용함수를 최소화하는 θ값을 찾기 위한 해석적인 방법이 있음
이를 정규방정식이라고 함
normal equation
유사역행렬
이는 특잇값 분해 SVD(Singular value decomposition)라 부르는 표준 행렬 분해 기법을 사용해 계산
역행이이 없다면 정규방정식이 작동하지 않음
but 유사역행렬은 항상 구할 수 있음
4.1.2 계산 복잡도
4.2 경사 하강법
일반적인 최적화 알고리즘
비용 함수를 최소화 -> 반복해서 파라미터 조정
짙은 안개 때문에 산속에서 길을 잃었으면 발밑 지면의 기울기만 느낄 수 있다
가장 가파른 길을 따라 아래로 내려가는 것!
파라미터 벡터 세타에 대해 비용 함수의 현재 그레이디언트를 계산함
-> 그레이디언트가 감소하는 방향으로 진행함
0이 되면 최솟값에 도달함!
세타를 임의의 값으로 시작(무작위 초기화, random initialization)
한 번에 조금씩 비용함수가 감소되는 방향 -> 알고리즘이 최솟값에 수렴할 때까지 점신적으로 향상!!
경사 하강법에서 중요한 파라미터는 스텝의 크기
-> 학습률 하이퍼파라미터로 결정됨
학습률이 너무 작으면, 스텝의 크기가 너무 작으면
그레디언트 0으로 수렴하기 위해 반복을 많이 진행해야 함 -> 시간이 오래 걸림
학습률이 너무 그면 -> 큰 값으로 발산해버림
경사하강법 problem
1. 왼쪽에서 시작하면
global minimum보다 덜 좋은 local minimum 수렴
2. 오른쪽에서 시작
평탄한 지역을 지나기 위해 시간이 오래 걸리고, 일찍 멈추게 되어 global minimum 도달 못함
왼쪽 : 스케일 적용 - 최솟값으로 곧장 진행
오른쪽 : 스케일 적용 안 함 - local minimum 방향에 거의 직각으로 향하다가 평면으로 골짜기를 길게 돌아가다가 최솟값 도달 -> 시간 오래 걸림
=> desent gradient 사용시 반드시 모든 특성이 같은 스케일을 갖도록 만들어야 함
그렇지 않으면 수렴하는 데 훨씬 오래 시간이 걸림
이처럼 훈련세트에서 비용 함수를 최소화하는 모델 파라미터의 조합을 찾는 것을
-> 파라미터 스패이스에서 찾는다고 함
모델이 가진 파라미터가 많을수록 -> 이 공간은 커지고 검색이 더 어려워짐
4.2.1 배치 경사 하강법
세타j에 대 비용 함수의 그레이디언트를 계산해야 함
즉, 세타j가 조금 변경될 때 비용 함수가 얼마나 바뀌는지 계산!
편도함수 partial derivative
이는 동쪽을 바라봤을 때 발밑에 느껴지는 산의 기울기는 얼마인가?와 같은 질문임
이는 batch gradient descent
-> 매 스텝에서 훈련 데이터 전체를 사용함
-> 매우 큰 훈련 세트에서 아주 느림!
위로 향하는 그레이디언트 벡터가 구해지면 -> 반대 방향인 아래로 가야함
즉, 세타에서 편도미분을 빼야한다는 의미
아래로 가는 스텝의 크기를 결정하기 위해 그레이디언트 벡터랑 학습률을 곱함
왼쪽 : 학습률 너무 낮음, 최적점에 도달하겠지만 시간이 오래 걸림
가운데 : 적당함
오른쪽 : 학습률 너무 높음, 알고리즘 널뛰면서 스텝마다 최적점에서 점점 멀어져서 발산
적절한 학습률을 찾으려면 그리드 탐색을 사용함!
BUT 수렴하는 데 너무 오래 걸리는 모델을 막기 위해 반복 횟수 제한해야 함
-> 반복 횟수를 아주 크게 지정하고 그레디언트 벡터가 아주 작아지면, 허용오차 tolerance보다 작아지면 경사 하강법이 최솟값에 도달함 -> 알고리즘 중지!
'Machine Learning & Deep Learning > 핸즈온' 카테고리의 다른 글
ch.17.4~6 합성곱, 순환, 잡음 제거 오토인코더 (0) | 2023.11.30 |
---|---|
ch17. 오토인코더와 GAN ~ 17.1 효율적인 데이터 표현 (0) | 2023.11.28 |
핸즈온 ch15. RNN과 CNN을 사용해 시퀀스 처리하기 (0) | 2023.08.29 |
핸즈온 퍼셉트론 Perceptron - 공부 아직 다 안함 ㅋㅋ (0) | 2023.08.29 |
LeNet-5, AlexNet, GoogLeNet, ResNet (0) | 2023.08.17 |