본 포스팅은 조경현 교수님의 부스트코스 딥러닝을 이용한 자연어처리 강의를 듣고 주요 내용을 다시 한 번 정리하고자 하였다.
강의 내용이 꽤 어렵다고 느꼈지만, 그러면서도 뻔한 이야기보다 좀 더 다양한 시각에서의 접근법을 알아갈 수 있는 강의라고 생각이 들었다.
[Overview]
알고리즘이란?
- 어떤 문제를 푸는데 있어서 필요한 일련의 명령들이다.
알고리즘을 정의하자면 여러가지 Definition들이 있다. 하지만 가장 간단하게 정의하자면 instruction set을 어떻게 sequence로 나열해서, 그 나열된 sequence대로 instruction set이 실행되었을 때 우리가 원하는 대로 결과가 나올 것이냐의 문제라고 정의할 수 있다.
전통적인 알고리즘은 input, output, constraint(제약 조건), procedure(절차) 등이 상세하게 정의되어 있다.
이 주어진 specification을 바탕으로 문제를 해결하기 위해 알고리즘을 짜게 된다.
머신러닝이란?
- Data-Driven algorithm design이라고 할 수 있다.
문제에 specification을 주기 힘든(애매한) 경우가 많이 있다. 대신 example이 주어져있다. 이 example을 가지고 알고리즘을 거꾸로 찾아낸다.
머신러닝의 대상이 되는 문제들은 보통 specification을 하기 어려운 경우이다. 예를 들어 사진으로부터 얼굴을 찾아내는 face detection 알고리즘의 specification은 명확히 정의하기가 어렵다.
어떤 것들을 얼굴이라고 고려할 것이며, 옆으로 돌아간 얼굴에 대해서도, 고개를 숙인 모습이나 등 뒤로 돌아서있는 모습에 대해서도 detection을 할 것인지에 대해서 specification하기란 쉽지 않다.
기존의 문제 해결처럼 specification을 통해서 알고리즘을 정의하기 어렵다면, example을 통해서 해결하는 것이 머신러닝이다.
머신러닝은 input과 output의 pair를 정해주면서, 이러한 example을 가지고 알고리즘이라는 것을 거꾸로 찾아내게 한다.
이것이 머신러닝에서의 접근 방법이다.
가령, 앞에서 언급한 face detection 문제를 예로 들면, 기계한테 사진을 주면서 이런 것들을 얼굴이라고 example을 알려주는 것이다.
이러한 방법은 기존의 알고리즘 접근 방법과는 반대 방향에서의 접근으로도 볼 수 있고, 또 다른 말로는 알고리즘 디자인에 대한 meta-approach(메타한 접근)이라고도 볼 수 있다. 그리고 이러한 프레임 안에서 가장 잘 쓰이는 것이 지도 학습이다.
- 지도 학습(Supervised-Learning)에서 결정해야할 일
1. N 개의 Input 과 Output 으로 구성된 훈련 샘플(Training Examples)
D={(x1,y1),⋯,(xN,yN)}
2. Loss Function: 머신러닝 모델 M 의 Output, M(X) 와 실제 값들인 y 를 평가할 지표
L(M(x),y)≥0
3. 모델을 평가할 검정 세트(Validation Set: Dval) 와 테스트 세트(Test Set: Dtest): 만든 모델이 기존에 보지 않았던 데이터를 풀 수 있는가를 검정한다.
1. 가설 집합(Hypothesis Sets): 가설이란 이 문제를 풀기위한 알고리즘, 모델 아키텍쳐를 설정하는 과정이다.
2. 최적화 알고리즘(Optimization algorithm): Loss를 낮출 수 있는 머신을 찾을 수 있는 지에 대한 학습 방법을 결정한다.
- 모든 것이 결정 되면, 지도학습은 각 가설 Hm 에 대하여 최적화 알고리즘을 사용해 제일 좋은 모델을 찾는다.
- Given:
- Dtrain=(x1,y1),⋯,(xN,yN),Dval,dtest
- L(M(x),y)≥0
- H1,⋯,HM
- Optimization Algorithm
- 과정:
- Given:
1. [Training] 각 가설마다, Training Set 을 사용해서 퍼포먼스가 제일 좋은 모델들을 찾는다.
M^m=argminM∈Hm∑(x,y)∈DL(M(x),y)
2. [Model Selection] Validation Set 을 사용해서 훈련된 모델들 중에 제일 좋은 모델을 선택한다.
M^m=argminM∈Hm∑(x,y)∈DvalL(M(x),y)
3. [Reporting] Test Set 를 사용해서 제일 좋은 모델의 퍼포먼스를 측정한다.
R(M^)≈∣Dtest∣1∑(x,y)∈DtestL(M^(x),y)
[Hypothesis set]
- 가설 집합은 무수히 많다. 머신러닝 접근 방법, 모델 구조, 하이퍼파라미터등 요소를 하나씩 변화할 때 마다 가설 하나가 세워지기 때문이다.
- 이번 강의 에서는 딥러닝에 한정 지어서 이야기 한다.
- 그렇다면 네트워크 아키텍처를 어떻게 정해야 할까?
- 명확한 정답은 없다.
- 다만 네트워크 아키텍처가 정해지면 그 뒤부터는 모든 것이 자동화 과정으로 넘어가는데, 어떻게 이것이 가능한지 알아보자.
- 인공신경망은 무엇일까?
- 비순환 그래프(DAG) 라고 할 수 있다.
- DAG란 An (arbitrary) directed acyclic graph이다.
- 복잡한 퍼셉트론 등등 .. 다 필요없이 그냥 이러한 그래프로 모두 표현이 된다고 보면 된다.
- 예를 들면 Classification을 할 때의 Logistic regression 과정을 다음과 같이 표현할 수 있다.
- 각 노드들은 이미 Tensorflow, Pytorch 등 패키지에서 잘 정의되어 있다. 우리는 이 노드들을 어떻게 연결 시킬지에 집중하면 된다.
- 인공신경망의 장점
- 높은 수준의 추상화가 되어있으며, 비순환 그래프 안에 있는 노드들이 어떻게 구현되있고, 벡엔드 에서 어떻게 쓰고 있는지 고려할 필요가 없다.
- 객체 지향 프로그래밍 패러다임에 적합하다.
- 코드 재사용이 용이하다.
[Probability in 5minutes]
- 사건집합(Event Set) : 모든 가능한 사건의 집합
- 확률변수(Random Variable): 사건집합 안에 속하지만 정의되지 않은 어떤 값
- 확률(Probability): 사건집합에 속한 확률변수에게 어떤 값을 지정해주는 함수이다.
- 특성(Properties)
- Non-negatives: p(X=ei)≥0 , 확률은 비음수이다.
- Unit volume: ∑e∈Ωp(X=e)=1 , 모든 확률의 합은 1이 되어야 한다
- 위 두가지 특성이 굉장히 당연하면서도 단순하지만 모든 Loss function들이 이를 기반으로 define 된다.
- 결합확률(Joint probability): p(Y=ejY,X=eiX)
- 조건부 확률(Conditional probability): p(Y=ejY∣X=eiX)
- 한계 확률(Marginal probability): p(Y=ejY)=∑e∈ΩXp(Y=ejY,X=eiX)
- 예를 들어 서로 독립적이지 않은 두 동전을 순차적으로 던지는데, 첫번째 동전에는 관심이 없고 두번째 동전의 앞면이 나온 사건에만 관심이 있다면 두번째 동전의 앞면이 나온 사건에서의 첫번째 동전의 사건을 모두 더하는 것이다. 이는 굉장히 중요한 컨셉이다.
[Loss function]
- 지도학습은 Input(x) 값을 넣었을 때 Output(y) 값을 산출 하는 것이다. 하지만 조금만 다르게 생각해서, Input(x) 값이 주어졌을 때 의 Output(y) 값이 y’ 일 확률을 구하는 것으로 생각할 수 있다.
- fθ(x)= ?→p(y=y′∣x)= ?
- 어떤 확률 분포들이 있을까?
- 이진 분류: 베르누이(Bernoulli) 분포
- 다중 분류: 카테고리(Categorical) 분포
- 선형 회귀: 가우시안(Gaussian) 분포
- 다항 회귀: 가우시안 믹스쳐(Mixture of Gaussians)
- 인공신경망 모델이 조건부 확률 분포를 출력하면 이를 사용해서 비용함수를 정의 할 수 있다.
- 최대한 모델이 출력한 조건부 확률 분포가 훈련 샘플의 확률분포와 같게 만드는 것이다. 즉 모든 훈련 샘플이 나올 확률을 최대화 하는 것이다.
- 이렇게 함으로서 자동으로 비용함수를 정의 할 수 있다. 이를 최대 우도 추정(Maximum Likelihood Estimation)라고 한다. 또한 최소화를 하기 위해서 앞에 마이너스 부호를 붙여준다. (-1 을 곱함)
- 최종적으로, 비용함수는 음의 로그확률(Negative Log-probabilities)의 합으로 결정된다.