Coursera Machine Learning -Week4- 요약(신경망 표현)

week4에서 학습하기


  • 신경망 모델링
  • 신경망에 의한 다 클래스 분류

  • 신경망



    신경망이란?



    뇌를 모방하려는 데이터 구조와 알고리즘.
    신경망은 뇌 뉴런의 네트워크를 시뮬레이션함으로써 발전했다.
    따라서, 우선 뉴런에 대하여 설명한다.

    뉴런 모델링



    뉴런은 많은 입력을 받고, 어떤 계산을 수행하고, 그 출력을 다른 뉴런으로 보냅니다. 다음 그림과 같이 모델링 할 수 있습니다.


    여기에서는 뉴런을 로지스틱 회귀로서 모델화하고 있다. $h_\theta(x)$는 다음과 같습니다.
    h_\theta(x) = \frac{1}{1 + e^{-\theta^T x}}
    

    여기서 $\theta$와 $x$는 다음과 같습니다.
    \theta = \begin{pmatrix}
    \theta_0\\
    \theta_1\\
    \theta_2\\
    \theta_3
    \end{pmatrix}
    ,
    \hspace{10px}
    x = \begin{pmatrix}
    x_0\\
    x_1\\
    x_2\\
    x_3
    \end{pmatrix}
    

    $x_0$는 바이어스 항으로 항상 $x_0=1$. 따라서 $x_0$는 그림에 쓰지 않을 수 있다.
    또한 $\theta $는 매개 변수 벡터로 가중치라고도합니다. 여기서 $\theta_0$는 바이어스 항에 걸리는 가중치를 나타낸다.

    신경망 모델링



    신경망은 뉴런이 몇 개 모인 그룹이다. 다음 그림과 같이 나타낼 수 있습니다.



    기법 설명


    a_i^{(j)} = j層のi番目のユニットの出力\\
    \Theta^{(j)} = j層からj+1層への重みを表す行列
    

    $j$계층에 $s_j$개 단위, $j+1$계층에 $s_{j+1}$개 단위가 있는 경우, $\Theta^{(j)}$의 차원은 $s_{ j+1}\times (s_j+1)$입니다.
    이들을 사용하여 출력 $ h_\Theta (x) $는 다음과 같이 계산할 수 있습니다.
    a_1^{(2)} = g(\Theta_{10}^{(1)}x_0 + \Theta_{11}^{(1)}x_1 + \Theta_{12}^{(1)}x_2 + \Theta_{13}^{(1)}x_3)\\
    a_2^{(2)} = g(\Theta_{20}^{(1)}x_0 + \Theta_{21}^{(1)}x_1 + \Theta_{22}^{(1)}x_2 + \Theta_{23}^{(1)}x_3)\\
    a_3^{(2)} = g(\Theta_{30}^{(1)}x_0 + \Theta_{31}^{(1)}x_1 + \Theta_{32}^{(1)}x_2 + \Theta_{33}^{(1)}x_3)\\
    h_{\Theta}(x) = a_1^{(3)} = g(\Theta_{10}^{(2)}a_0^{(2)} + \Theta_{11}^{(2)}a_1^{(2)} + \Theta_{12}^{(2)}a_2^{(2)} + \Theta_{13}^{(2)}a_3^{(2)})
    

    여기서 $g$는 로지스틱 함수로 한다.

    다중 클래스 분류



    이하의 도면과 같이, 출력층의 유닛을 복수 준비함으로써, 다 클래스 분류도 행할 수 있다.



    이 때 출력을 다음과 같이 벡터의 한 요소만 1이 되도록 한다.
    h_\Theta(x) \approx \begin{pmatrix}
    1\\
    0\\
    0\\
    0
    \end{pmatrix}
    ,
    \hspace{10px}
    h_\Theta(x) \approx \begin{pmatrix}
    0\\
    1\\
    0\\
    0
    \end{pmatrix}
    ,
    \hspace{10px}
    h_\Theta(x) \approx \begin{pmatrix}
    0\\
    0\\
    1\\
    0
    \end{pmatrix}
    ,
    \hspace{10px}
    \hspace{10px}
    h_\Theta(x) \approx \begin{pmatrix}
    0\\
    0\\
    0\\
    1
    \end{pmatrix}
    

    필기 숫자 인식과 같은 작업을 생각할 때,
    h_\Theta(x) \approx \begin{pmatrix}
    1\\
    0\\
    0\\
    0
    \end{pmatrix}
    

    의 경우는 「숫자의 0」과 같이 각 벡터에 대하여 라벨을 할당함으로써, 다클래스 분류를 행할 수 있다.

    필기 숫자 분류



    아래 그림과 같이 0~9까지의 수기 숫자를 로지스틱 회귀와 신경망을 이용하여 분류하는 경우를 생각한다.


    이번 분류에 사용하는 신경망은 입력층, 은폐층, 출력층 각각 하나씩 3층으로 구성되어 있다.
    입력층에는 20px$\times$20px의 화상을 벡터화한 400개의 수치가 입력된다. 바이어스 항이 존재하기 때문에, 입력 층의 유닛 수는 401이된다. 출력층의 단위수는 0~9까지의 숫자를 인식하기 위해 10개 있다. 또한, 은닉층의 유닛수는 바이어스항을 포함하여 26개이다.

    로지스틱 회귀를 이용한 경우의 정밀도는 94.6%였지만, 뉴럴 네트워크를 이용한 경우는 97.5%였다.

    소스 코드



    연습 코드를 Python으로 작성했으므로 읽고 싶은 사람은 부디.
  • htps : // 기주 b. 코 m / 히론 씨 / 이런 r 세라 마치 네 아 r 마인 g / t Ree / Ma s r / E x3

  • 참고 자료


  • Coursera week4 NEURAL NETWORKS: REPRESENTATION
  • 로지스틱 회귀
  • scipy.optimize.fmin_cg 문서
  • 좋은 웹페이지 즐겨찾기