


이진분류에 사용할 수 있는 학습 알고리즘이 바로 로지스틱 회귀
가 주어지면, 그 에 대한 예측값 즉, 출력값
출력값은 다음과 같이 표현
: 차원 열벡터인 와 의 각 행의 값을 (element wise) 하게 곱한 것.
(각 행렬의 원소끼리만 곱 -> 과 의 행렬을 곱해 을 만든다.)
- 이 결과 또한 차원 열벡터가 된다.
즉, + + ... + 와 같은 모든 합을 구해야 하므로
- :
시그모이드 함수를 에 대한 함수로 본다면, z 가 크다면 1에 가까운 값, 음으로 작다면 0에 가까운 값을 나타내게 되어 1과 0으로 표현 가능 하기 떄문에
Binary Classification 의 아웃풋을 나타낼 수 있는 이른바 Activation function(활성 함수)이다.

손실함수 =
비용함수 :
일떄
청취자에게 날씨 정보를 보내기 위해서 최소 몇 비트가 요구되는가?
만약 날씨 상태의 개수가 8개라면, 몇 비트가 필요한가?
엔트로피 사건 발생확률 질문개수
= 사건 발생확률
=
=

사건 발생확률

엔트로피
평균 정보량을 측정
기계 Y 가 불확실성이 더 작다(모든 사건이 같은 확률로 일어나는 것이 가장 불확실) 이를 식으로 정리하여 샤넌은 이 불확실성의 측정을 "Entropy" 라고 불렀으며 이를 H 로 표시하고 단위는 bit 로 하였다.
불확실하면 불확실할수록 우리가 사용하는 정보량, 비트수는 즉 엔트로피는 높아진다.
즉 엔트로피란 최적의 전략하에서 그 사건을 예측하는데 필요한 질문의 개수를 의미한다 다른 표현으로는 최적의 전략 하에서 필요한 질문의 개수에 대한 기댓값이다. 따라서 이 엔트로피가 감소한다는것은 우리가 그 사건을 맞히기 위해서 필요한 질문의 개수가 줄어드는 것을 의미한다. 질문의 개수가 줄어는다는 사실은 정보량도 줄어든다는 사실.
극단적인 경우를 생각해보자

연속된 변수에 걸쳐 정의된 밀도에 대해 벡터 x로 집합적으로 나타낸다면, 미분 엔트로피는 다음과 같이 주어진다.
예) 우리가 날씨에 대해서 (8개의 날씨 상태가 모두 같은 확률로 일어날 떄)의 메세지를 사용한다고 가정하자

불행하게도, 각 날씨 상태의 확률은 균등하지 않다.
엔트로피 ... bits
날씨 상태를 3 bit 메시지로 보낼 필요가 없다는 뜻이다.

만약 우리가 이 경우에 다른 코드를 사용한다면, 우리가 필요로 하는 비트는 다음과 같이 계산된다.
즉 크로스 엔트로피란?
는 특정 확률에 대한 목표 확률, 는 우리가 학습한 확률값
즉, 실제 분포 와 예측 확률 분포 가 다르면 크로스 엔트로피가 증가한다.
크로스 엔트로피
- 만약 라면
Binary Classification 과 이를 구현하기 위한 Logistic Regression 알고리즘과 sigmoid 함수, 그리고 Loss 함수 및 Cost function 등 알아보았고, 이제 우리가 학습시켜야할 w(weight) 와 b(bias)를 어떻게 학습 시켜야 하는지 알아본다.
Gradient Descent 는 Cost j(w,b)가 최소가 되는 w, b의 값을 찾아가는 과정이다.


라는 함수를 왼쪽에서 오른쪽으로 순차적 계산을 통해 아웃풋 산출.
컴퓨터가 인풋을 받았고 최종 아웃풋 를 계산하기 위해 3단계로 순차적 계산을 해나간다. 이것이 딥러닝에서의 Forward Propagation 이다.


Forward propagation 을 통해 를 구했고 로 표기
이제 Backward propagation 을 통해 달성하고자 하는 것이 무엇인지 생각해보자 학습의 대상이 되는 파라미터 의 최적값을 찾아 업데이트 해 나가는 것이 목적이다.
다시 말해 가 최저점일떄의 의 값을 말한다. 그러면 우리는 최종적으로 Gradient Descent 알고리즘을 통해 각 변수가 값에 미치는 영향(혹은 기울기)를 구해서 여기에 를 곱해준 후 이 값을 다시 에 업데이트 하면 된다.

우리는 결국 를 편미분과 체인룰을 이용하여 구해야 한다. 앞서 Forward propagation 에서 구한 를 대상으로 미분 한 , 를 구해야 한다. 편의상 공통 요소인 와 을 표기에서 생략하여 간단히 로 나타낸다.
값의 직접적인 변수인 미분 부터 즉, 부터 차례대로 곱해 나가야 한다.

첫 번째) 를 로 미분한 값
두 번째) 를 로 미분
를 로 미분하여 Gradient 알고리즘에 의해 업데이트할 구하기
업데이트
데이터의 개수가 개 일떄의 logistic regression 과정을 알아보자.
개의 데이터에 대한 Cost 함수는 다음과 같이 구한다.
1 번쨰 데이터에 대한 값, 2 번쨰 데이터에의 값, ..., 번쨰 데이터의 값을 모두 합하여 평균을 구하는것이다.

수도코드 분석

를 모두 으로 초기화를 시킨다.
for 문을 사용해 1~m 까지 반복하여 Cost 함수 구하기
, 그리고 활성 함수를 통하여 의 값을 구하고 Cost 함수인 J 를 구해야 한다.
뒤이어 Back propagation 과 Gradient Descent 실행을 위해 의 값을 구한다.
가 여러개 일 때, 이에 대한 반복이 이루어질 수 있다.
그리고 개의 데이터에 대한 것이므로, 마지막에 각각의 값을 으로 나누어 평균을 구한다.
마지막으로는 m 개의 데이터에 대해서 업데이트 된 dw1, dw2, db 를 Gradient Descent 알고리즘을 통해서 최종적이로 w1, w2, b를 업데이트 하게 된다.
많은 데이터에 대한 딥러닝 알고리즘을 학습하는것은 오랜 시간이 걸린다.
벡터화는 딥러닝 알고리즘의 속도 향상의 중요한 역할을 한다.
부터 번쨰의 데이터에 대한 반복, 그리고 가 여러개일 때 이에 대한 반복으로 인한 시간복잡도 증가
vectorization(벡터화)를 통해 for 구문 삭제
logistic regression 의 정의



[분석]




