모호하게 알고 있던 내용들을 부캠강의에서 명료하게 정리해줬다.
당연한 이야기들도 많은데 그냥 다 정리했다.
AI = 사람의 지능을 모방하고자 한다
ML = 데이터 기반으로 문제 풀이 접근
DL = 데이터 기반으로 사람의 지능을 모방하고자 할 때, NN을 사용하는 분야
문제의 정의에 따라서 달라진다.
문제의 정의에 맞는 모델 필요
data와 model이 정해져있을 때, 문제의 정의에 따라 이를 어떻게 학습할지 정의.
Loss function이 정상적으로 작동한다고 할지라도, 원하는 결과를 뱉을거란 보장은 없다.
가령, 회귀문제라 할지라도 노이즈 굉장히 많이 낀 데이터를 사용한다고 해보자.
그러면 outlier는 MSE의 제곱에 의해 굉장히 커질 것이다.
이런 문제를 방지하기 위해 MSE에서 제곱 대신 절대값을 사용하거나 아예 다른 loss function을 사용하는 것을 고려할 수 있다.
따라서 문제와 데이터에 따라 적절하게 정의해주자.
Loss function을 최적화시켜주는 방법들.
보통 NN의 parameter를 loss function에 대해 1차 미분한 정보를 활용하는데, 이를 그냥 활용하는 것이 SGD.
실제로 SGD는 잘 안 쓰이고 나머지 것들이 쓰인다.
그 외에도 다음과 같은 기법들이 쓰인다.
보통 논문들은 다양한 learning schedule을 통해 구현된다.
learning rate를 epoch마다 바꾼다던지, SGD를 사용한다던지 등등...
이러한 방법론들을 보통 매우 큰 컴퓨팅 리소스를 요구한다.
가령, 대기업이 TPU를 1000개를 보유하고 있다고 할 때, 해당 기업은 한번에 1000개의 configuration을 돌려볼 수 있다. 학생들은 보통 GPU를 많아야 1, 2개 가지고 있는데 대기업 역량의 논문을 쓰고자 한다면 1년이 넘어갈 수도 있다.
이 때, Adam은 대부분의 방법론에서 매우 잘 작동한다. 즉, 많은 configuration을 실험해야 하는 의무를 어느 정도 벗어주게 한 것이다.
기존의 이미지들을 사용해, 실제와 같은 이미지를 생성하는 DL.
연구자가 술집에서 술 먹다가 아이디어가 떠올랐다고 한다...
DL을 DL이라고 불리게 해준 연구. NN을 굉장히 깊게 쌓은 논문.
이전에는 깊은 layer를 구성하지 않았다. 왜냐하면 학습 데이터는 잘 학습될지라도 테스트 데이터를 사용하면 성능이 별로였다.
ResNet 이후에는 깊은 layer를 쌓기 시작했다. 물론 1000 layer와 같은 구성방식은 여전히 안되고 비효율적이다. 하지만 이전에는 20 layer 밖에 쌓지 못했던 것을 100 layer로 쌓게 해주는 것과 같은 성과를 보여줬다.
"Atten is All You Need"라는 제목의 논문.
당시에는, 해당 분야에서만 잘 작동하는 것이라 생각됐지만 현재는 거의 모든 분야의 RNN을 대체했다. CV까지 넘보는 중.
Bidirectional Encoder Representations from Transformers.