[ML] 4주차-1 : Neural Networks

k_dah·2021년 11월 18일
0

MachineLearning_AndrewNg

목록 보기
7/32
post-custom-banner

Machine Learning by professor Andrew Ng in Coursera

0) Non-linear Hypotheses


linear regression과 logistic regression이 있는데 neural network를 왜 더 배워야 할까

위의 그림과 같이 logistic regression을 통해 non-linear boundary를 만드는 것이 가능하다.

g(θ0+θ1x1+θ2x2+θ3x1x2+θ4x12x2+...+θ6x1x22+...)g(\theta_0 + \theta_1x_1+\theta_2x2+\theta_3x_1x_2+\theta_4x_1^2x_2+ ... +\theta_6x_1x_2^2+...)

하지만 위의 상황은 feature가 2개뿐이었기에 가능했다.
대부분의 머신러닝 문제들은 feature가 매우 많다.
원래 feature 개수가 많았다면 위의 방법을 적용하면 그 개수가 엄청나게 늘어나게 된다.
또한 연산량도 증가하고 overfitting 가능성도 높아진다.

1) Model Representation I

Neuron model: Logistic unit


  • x0x_0bias unit으로 항상 1의 값을 가지며 굳이 나타내지 않기도 한다.
  • hθ(x)h_\theta(x) 는 logistic function을 사용하는데, sigmoid activation function (non-linearity g(z)) 이라 부르기도 한다.
  • θ\theta들을 weight 라고 부른다.

이제 여러 개의 뉴런을 살펴보자.

Neural Network


  • 첫 번째 layer : input layer
  • 마지막 layer : output layer
  • input과 output의 중간 layer들 : hidden layer
    • 이때 hidden layer의 node들을 ai(j)a_i^{(j)} (unit ii in layer jj)로 나타내고 activation unit 이라고 부른다.


이때 각 activation node의 계산은 다음과 같다.

각 layer는 고유한 weight matrix Θ(j)\Theta^{(j)}를 갖는다.

만약 network가 layer jjsjs_j개 unit을 갖고, layer j+1j+1sj+1s_{j+1}개의 unit을 갖는다면 Θ(j)\Theta^{(j)}의 dimension은 sj+1×(sj+1)s_{j+1} \times (s_j + 1)

2) Model Representation II

Forward propagation: Vectorized implementation


앞의 함수들을 새로운 변수 zk(j)z_k^{(j)}를 이용하여 vector로 표현해 본다.

a1(2)=g(z1(2))a2(2)=g(z2(2))a3(2)=g(z3(2))a_1^{(2)} = g(z_1^{(2)})\\ a_2^{(2)} = g(z_2^{(2)})\\ a_3^{(2)} = g(z_3^{(2)})\\

즉, layer j=2j=2, node kk에 대해 zz 변수는 다음과 같다.

zk(2)=Θk0(1)x0+Θk1(1)x1+...+Θkn(1)xnz_k^{(2)} = \Theta_{k0}^{(1)}x_0 + \Theta_{k1}^{(1)}x_1+ ... + \Theta_{kn}^{(1)}x_n

xxzjz^j를 벡터로 나타내면

x=[x0x1...xn]z(j)=[z1(j)z2(j)...zn(j)]x = \begin{bmatrix}x_0\\x_1\\...\\x_n \end{bmatrix} z^{(j)} = \begin{bmatrix}z_1^{(j)}\\z_2^{(j)}\\...\\z_n^{(j)} \end{bmatrix}

x=a(1)x=a^{(1)}라 할때 식을 일반화하면,

z(j)=Θ(j1)a(j1)z^{(j)} = \Theta^{(j-1)}a^{(j-1)}

최종 zz vector는 Θ(j1)\Theta^(j-1) 다음 행렬과 모든 activation node에서의 값의 곱으로 구한다. 최종 theta matrix Θ(j)\Theta^{(j)}는 단 하나의 행을 가지므로, 그 결과는 single number가 된다. 최종결과는 다음과 같다.

hθ(x)=a(j+1)=g(z(j+1))h_\theta(x) = a^{(j+1)} = g(z^{(j+1)})

마지막 단계에서 layer jjj+1j+1 사이에서, logistic regression에서 했던 것과 정확히 같은 방식이 쓰이는 점을 주목하자.
이렇게 중간 layer 들을 쌓아 올림으로써 더욱 복잡한 non-linear hypothesis를 생성해낼 수 있다.

Neural Network Learning its Own Features


logistic regression과 다른 점은 주어진 feature를 그대로 쓰지 않고 a1(2),a2(3)a_1^{(2)}, a_2^{(3)}를 쓴다는 점

profile
개똥이
post-custom-banner

0개의 댓글