Coding/Coursera

[Andrew Ng] Neural Network and Deep Learning : 2. Basics of Neural Network Programming (1)

폴밴 2021. 10. 6. 13:45

Basics of Neural Network Programming

Binary Classification

바이너리(0 또는 1)로 분류하는 것을 의미한다.

예를 들어 고양이의 이미지를 보고 고양이인지(1) 아닌지(2)를 판단해 라벨을 다는 것은 binary classification이다.

Notation

nxnx features : xx, output yy

xRnx, y0,1

m개의 training example : (x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))

X = [x(1) x(2) ... x(m)]
\
X \cdot shape = (n_x,m)

Feature Vector Xnx×m matrix이다.

다른 표기에서는 X를 transpose하여 만드는 경우도 있지만, 코드 작성의 편의를 위해 위와 같이 표기한다.

Y = [y(1) y(2) ... y(m)]
\
Y \cdot shape = (1,m)

Logistic Regression

x가 주어졌을 때, ˆy=P(y=1x) (y=1일 확률)을 구한다.

  • 파라미터bR
  • wRnx
  • 출력
  • ˆy=σ(wTx+b)    =σ(z)=11+ez

Logistic Regression cost function

Training set(x(i),y(i))이 주어졌을 때,

알고리즘의 y=1일 확률이 실제와 비슷해지기를 원한다. (ˆy(i)y(i))

  • Loss (error) Function :오차 함수가 최대한 작게 만들기를 원한다.
  • (ylogˆy+(1y)log(1ˆy))

  • Cost Function파라미터 w,b를 조절해서 cost function J가 최소가 되도록 하는 w,b를 찾는다.
  • J(w,b)=1mmi=1[y(i)logˆy(i)+(1y(i))log(1ˆy(i))]

Gradient Descent

이를 통해 cost function의 global optimum을 찾고 이때의 w,b를 구한다.

수렴할 때까지 다음 식을 반복한다.

w:=wαJ(w,b)w

b:=bαJ(w,b)b

Derivatives

More derivatives examples

Computation Graph

변수의 관계와 흐름을 파악할 수 있는 그래프이다.

오른쪽으로 가면 어떤 변수가 어디에 들어가는지, 왼쪽으로 가면 미분할 때 유용하게 사용할 수 있다.

Derivatives with a Computation Graph

u=bc, v=a+u, J=3v 일 때

  • J=3v 이므로dJdv=3
  • v=1111.001 이 되면, J=3333.003 이 된다.

  • v=a+u 이므로연쇄법칙 (chain rule)에 의해서,dJdb=dJdududb=3×c
  • dJdc=dJdududc=3×b
  • dJda=dJdvdvda=3×1
  • a=55.001, v=1111.001, J=3333.003

또한, 이 강의에서 d[FindOutputVar]d[var]=d[var] 로 약속하고 사용한다.

Logistic Regression - Gradient Descent

Logistic Regression recap

Logistic Regression derivatives

[da]=dL(a,y)da=ya+1y1a

[dz]=dL(a,y)dz=ay

Gradient descent on m examples

J(w,b)=\frac 1 m \sum^m_{i=1}L(a^{(i)},y^{(i)})
\
\to a^{(i)}=\hat{y}^{(i)}=\sigma(z^{(i)})=\sigma(w^Tx^{(i)}+b)

w1J(w,b)=1mmi=1w1L(a(i),y(i))

Initialize values : J=0, dw1=0, dw2=0, db=0

For i=1 to m:

z(i)=wTx(i)+b

a(i)=σ(z(i))

JJ+[y(i)loga(i)+(1y(i))log(1a(i))]

dz(i)=a(i)y(i)

dw1dw1+x(i)1dz(i)

dw2dw2+x(i)2dz(i)

dbdb+dz(i)

Compute Average:

J/m, dw1/m, dw2/m, db/m

dw1=Jw1

For

w1:=w1αdw1

w2:=w2αdw2

b:=bαdb

for문이 이중으로 반복되기 때문에 비효율적이라는 단점이 있다.

이후 Vectorization을 통해 이를 해결할 수 있다.

Source

Neural Networks and Deep Learning

 

신경망 및 딥 러닝

deeplearning.ai에서 제공합니다. In the first course of the Deep Learning Specialization, you will study the foundational concept of neural networks and ... 무료로 등록하십시오.

www.coursera.org