-
패스트캠퍼스 환급챌린지 15일차 미션 (2월 15일) : 딥러닝·인공지능 Signature 초격차 패키지 Online. 강의 후기패스트캠퍼스 챌린지 2024. 2. 15. 13:06
자, 오늘은 비가 솔솔 오는군요
어제 삘받아서 혼자 좀 주루륵 달리다가,
인공신경망, 선형회귀, 경사하강법 등을 봤고,
오늘은 Adam 과 Validation 검증에 대한 내용을 배워보고자 함니다.
Part2. 인공지능의 이패 Lv.1: 인공지능/딥러닝 파헤치기
CH02-09. Adam
&
CH02-10. training vs test vs validation
&
CH02-11. K-fold cross validation
CH02-09. Adam
Monent와 RMSProp 두가지를 합친 것이 아담이라고 하는데, 이에 앞서 Moment과 RMSProp 두가지를 알아보자.
(분명 어제 들은 강의인데, 기억이 나지 않는 부분..)
이 두가지를 알려면 미니배치 SGD를 알아야 하는데, contour에서 목표점을 찾아가는 과정에 대해
GD나 SGD는 지그재그로 갈을 찾아나간다.(목표에 근처에 가면 방향을 툴면서 목표를 향한다.)
그러나, 불필요한 움직임이 매우 많은 단점이 있고,
momentum인 경우에는 이 contour에서 가속을 하면서 나아간다.(gradient를 누적하는 방법)
참, 지금 이 얘기들이 무엇이냐면 w(웨이트)가 경사하강법을 통해 답에 접근해나가는 방식에 대해 얘기하고 있다.
이 답을 도출해나가는 방법에 LR 등이 사용되지만 지금 말하는 것은 gradient 본연에 대한 답을 찾아가는 방식들에 대해
공부 중인 것이지. 음. 즉! 딥러닝 최적화 기법들..

자 그러면 SGD와 momentum을 다시 좀 비교하자면, SGD의 경우 지그재그 방향으로 w 값을 조절해가면서 찾아가는 방법이고, 물론 Momentum도 비슷하지만 모멘텀은 이전에 있던 방향의 것들이 남아 있어서 좌우로의 반동이 조금 덜 하고
가는 루트에 대한 횟수가 짧은 장점이 있다.(다만, 마지막에 가서 급하게 꺾는다고 정신을 못차림)
RMSprop(Root mean Square 프로파게이션)
ax+b에서 a, b 값을 구하는 과정에서 동일한 조건으로 변화를 주기 위한 방법이다.(크기를 수정)
즉, 업데이트 되는 보폭을 평준화해주자 (러닝 레이트 안에서)
내 설명이 워낙 개똥같았어서, 추가 내용을 좀 보태자면
RMSProp은 또다른 최적화 기법중 하나인 Ada Grad의 단점(학습이 진행될수록 LR이 꾸준히 감소하면서 나중엔 0으로
수렴함)을 보완하고자 나온 기법으로, 변수별로 학습률을 조절하되 이전 time step에서의 기울기를 같은 비율로
누적하지 않고 지수이동평균(.EMA)를 활용하여 기울기를 업데이트, 즉 이전 time step은 조금 반영 하고 최근의
time step일수록 많이 반영한다는 말인 것 같다.
즉 ,RMSProp의 장점은 변수마다 LR업데이트를 해줘서 효율적인 학습이 가능한 동시에, Ada Grad보다 학습을 많이 할 수 있다. 로 알 수 있다.
자, 이제 본격적으로 오늘의 강의인 Adam을 알아보자.
Adam은 RMSprop과 Momentum 두가지를 합친 것이다.(Adaptive Moment Estimation)
마지막 줄만 보자고 하신다.
잉? 위에서 본 EMA(Moving Average) 것과 유사한것 같은데(같은건가?...ㅎㅎ)
무튼 m은 방향을 고려하고, v는 보폭을 고려하여 과거의 기억을 점점 잊혀가는 수식이다.
즉 관성 + 과거는 잊어주세요 지금것에 집중하세요. 이것이 아담
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
자, 지금까지 배워본걸 정리해본다.
1. 뉴럴 네트워크에서 Weight를 조정하는 방법에는 보통 Gradient Descent를 사용한다.(경사하강법, 앞으로 GD라 함)
2. GD는 Loss Function값을 최소화하는 세타값을 찾는 것으로 기울기의 반대 방향으로 이동 하는 것을 반복
3. 위에말한 Loss Function을 계산할 때, 전체 Train-set을 이용하는 것을 Batch GD(BGD)라 하는데, 이렇게 하면
한 스텝마다 계산량이 엄청엄청 많아진다. 이를 위해 StoChastic GD 인 SGD를 이용한다.
4. SGD는 전체 데이터(Batch)를 이용하는 대신 일부 데이터 모음(Mini-Batch)를 이용하여 다소 부정확할 순 있어도 빠름
5. 또한 BDG에서 빠질 수 있는 Local Minimum에 빠지지 않고 좋은 방향쪽으로 나갈 가능성이 더 크다.
CH02-10. Training vs Test(vs Validation)
우리가 항상 데이터 셋을 준비할 때 뭐가 뭔지 모르고 일단 돌려보는데 좀 디테일하게 짚고 넘어갈 필요가 있다.
1. (data 관점에서 바라보면)
파라미터 학습을 위한 Data VS 최종적으로 합습된 모델 테스트용 Data (VS 하이퍼 파라미터 선택을 위한 Data)
AI 가 푸는 연습문제 VS AI가 볼 수능 문제 VS (VS AI가 보는 모의고사 문제)
2. TEST 데이터는 학습에 절대 절대 저어어얼대 사용되면 안됨.
AI가 처음 보는 데이터에도 잘 대답을 할 수 있는지를 보는게 우리 목표잖아.(미리 수능 문제 유출되면 안되듯이...)
지금 AI는 수능을 잘 보는것, 즉 test data에 대해 좋은 성과를 내는게 목표이다.(자율 주행도 테스트가 중요한 것처럼)
3. 따라서 학습 도중에 test 해보고 싶으면 validation(모의 테스트)을 활용하는 것이고,
이 validation 테스트를 통해 이 모델이 가장 성과가 높을 떄 시점을 잡을 때 사용할 수 있고
(epochs 수를 확인 할 수있겠지?... 그리고 학습을 아무리 많이 한다한들 Loss가 한없이 줄어들진 않는다.)
또 validation 테스트를 통해 하이퍼파라미터를 어떻게 조절해야되는지를 알 수 있따.
CH02-11. K-Fold Cross Validation
K-Fold Cross Validation이란, 데이터가 엄청엄청엄청 비루하게 작을 때 사용한다.
예를들어보자. 전체 데이터가 120개인데, 테스트 데이터로 20개를 쓰면 트레이닝 데이터로 100개밖에 못쓰는데,
이 100개 새모이만한 데이터를 또 트레닝과 validation으로 또 나눠야하는 것이다.
그래서!
Training data가 적어서 일부를 validation으로 쓰기 곤란할 때 K-Fold Cross Validation을 해볼만 하다는 것이다.
이 K-Fold Cross Validation란 무엇이나면?
제목에서도 알 수 있듯이 똑같은 하이퍼파라미터를 가진 model의 파라미터를 각기 다른
train, validation 조합의 데이터로 학습하자는 것이다.(편향된 validation을 피하고자 하는 것이다.)
위의 이미지에서 보이는 것처럼 데이터 수가 작을 때 벨리데이션 인덱스를 저렇게 여러가지 범위로 나누는 것이다.
(예를들어 인덱스가 1~20까지가 개사진만 있다고 할 때 개/고양이 분류를 하기 위한 validation 셋으로 하기엔
좋은 표본이 아닌 것이지.)

따라서,
각 모델들(각기 다른 하이퍼파라미터를 가진)에 5개의 다른 데이터셋(트레인+val)을 각각 학습시키고 거기서 평균 혹은 가장 잘 맞추는 아이를 뽑고,(앙상블이라고 하여 다수결로 다 합치기도 한다.)
저렇게 반복적으로 지속해서 가장 걸맞는 모델과 데이터셋을 찾아내 학습시키는 것이다.
마무리는 테스트로.
15일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글