GDSC HUFS 3기/텐서플로우로 시작하는 딥러닝 기초(Part-1)

[5팀] 텐서플로우로 시작하는 딥러닝 기초 | Lec 06

나쵸 소스 2021. 11. 23. 18:10

이 글은 boostcourse 강의를 참고하여 작성했습니다. 

작성자 : 홍수정

 

 

 

1. Multinomial Classfication (다항분류)

A,B,C 대략 그래프에 표시하면 그렇게 된다.

binary clasfication을 가지고도 다항분류 (multionmial classfication) 구현이 가능하다.

 

 

 

 

📌binary classfication으로 multionmial classfiaction을 하는 과정은 다음과 같다.


 

1. C이거나 C가 아닌 2개의 케이스로 나눈다.

2. B이거나 B가 아닌 2개의 케이스로 나눈다.

 

3. A이거나 A가 아닌 2개의 케이스로 나눈다. 

 


위의 과정으로 인해 3개의 각각 독립된 binary clasfication으로도 구현이 가능하게 된다. 

실제 구현을 위해 행렬로 표현하면 다음과 같다.  

3번 독립된 형태의 벡터를 가지고 계산을 하는 것이라 생각하면 된다. 하지만 이렇게 각각 독립적으로 하나씩 계산하게 되면

복잡해보이기 때문에 하나로 합쳐서 (Matrix multiplication)  계산을 하면 다음 아래 그림과 같이 나오게 된다. 

3개의 독립된 classifiaction을 구현해도 되지만 하나의 벡터로 처리하게 되면 한번에 계산이 가능하게 되므로 간단하게 처리가 된다.

 

 

 

 

 

2. Softmax (소프트맥스)

효율적으로 Sigmoid를 처리하는 법은?

우리가 logistic classifier를 써서 앞에 본 행렬식과 같이 벡터로 계산을 하면

어떤 입력값에 대해 3개의 벡터를 낸다. (A에 해당하는 값, B에 해당하는 값, C에 해당하는 값. 이들은 각각 0~1 사이의 값들이고 모두 더하면 1이 된다.)

=> 이런 형태로 표현하기 위해 사용하는 것이 소프트맥스(Softmax)

 

2,1,0.1의 값을 Softmax 함수에 넣게 되면 0.7,0.2,0.1이라는 값이 나오게 된다. (각각 0~1 사이 값이고 전체 sum이 1이 됨. 즉, 각각의 확률로 볼 수 있음)

 

💜'ONE-HOT' ENCODING : 제일 큰 값 (0.7)을 사용해서 나머지는 다 0으로 바꾼다 

 

 

 

예측한 값과 실제의 값이 얼마나 차이가 나는지 알기위해 Cost function 를 설계해야함.

 

예측 값과 실제 값, 두 개 사이의 차이가 얼마나 되는지를 cross-entropy를 사용해서 (D(S,L)의 오른쪽 식) 구하게 된다.

 

 

 

3. Cross-entropy (크로스 엔트로피) 

예측값과 실제값이 같은지 아닌지 확인 

예측이 틀릴 경우 큰 값으로 설정, 맞을 경우 작은 값으로 설정한다. 계산은 아래 그림과 같다.

앞에 설명한 대로 예측이 맞을 경우 0이라는 값을, 틀릴 경우 무한대라는 값이 나오게 된다.

 

 

 

4. Logistic cost VS cross entropy

Cost function 
cross entropy 
경사하강 알고리즘으로 cost function이 주어졌으면 cost를 최소화하는 값을 찾아낸다