-
[Week 4] Neural NetworksCourses/Andrew Ng - Machine Learning 2022. 1. 3. 21:38
Motivations
이번 강의부터 신경망에 대한 내용에 들어갑니다. 신경망 알고리즘은 복잡한 비선형 가설들을 계산할 때 유용합니다.
위의 지도 학습 분류 문제를 보면 feature가 단 두개밖에 없습니다. 데이터 셋에 적합한 가설을 만들기 위해 고차 다항식을 사용할 것 입니다. feature가 2개일 때는 큰 문제가 안될 수도 있지만 feature가 100개라고 가정한다면 계산하기 매우 복잡해집니다. feature가 100개인 경우 대략 5000개의 항을 가진 고차 다항식이 가설로 사용됩니다. 이는 데이터 셋에 overfit하고 계산에 많은 시간이 걸리게 됩니다. feature의 개수가 많을 때 비선형 가설은 적합하지 않습니다.
컴퓨터 비전 문제처럼 이미지를 분류하는 경우는 더 복잡해집니다. 이미지는 픽셀들의 집합인 행렬로 이루어져 있습니다. 한 픽셀당 흑백일 경우 uchar 1바이트의 용량이고 , 컬러일 경우 RGB 값이 들어가기 때문에 3배가 됩니다. 50 x 50 해상도의 작은 이미지라고 쳐도 그레이스케일 기준 2500개의 픽셀이 되고 이는 약 3백만 개의 항이 필요한 다항식이 됩니다. 복잡한 비선형 가설의 어려움을 극복하기 위해 신경망을 사용합니다.
Model Representation
신경망은 인간 뇌 속의 뉴런과 뉴런의 네트워크 구조를 모방했습니다. 뉴런의 수상돌기(Dendrite)에서 전기적 신호를 받고 뉴런 본체에서 계산을 합니다. 그 이후 축삭돌기(Axon)을 통해 다른 뉴런으로 계산된 신호를 전달합니다.
이러한 구조를 모방하여 구현한 인공 신경망입니다. x는 지금까지 사용해왔던 것 처럼 input vector입니다. 뉴런으로 치면 수상돌기에 해당된다고 할 수 있겠습니다. x0는 bias unit이라고 부르며 항상 출력이 1인 input입니다. 노란색 원은 뉴런을 의미하고 계산 유닛입니다. 계산 후 결과를 출력하고 여기서 출력은 가설 함수입니다. 이러한 구조를 시그모이드 또는 로지스틱 활성화 함수를 가진 뉴런 혹은 인공 뉴런이라고 부릅니다. theta는 지금까지 파라미터라고 불렀습니다. 파라미터는 가중치라고 불리는 경우도 있으니 기억해두세요.
인공 뉴런을 여러 개 연결해보았습니다. 첫번째 layer는 input layer라고 합니다. X값을 입력받습니다. 마지막 layer는 output layer입니다. 다수가 아닌 단 하나의 뉴런으로 이루어져 있습니다. 가설을 계산한 최종 값을 출력합니다. 그 외 사이에 끼어있는 layer들은 hidden layer라고 합니다. input도 output도 아니기 때문에 hidden된 상태라고 부릅니다. input layer에 bias unit이 존재할 수 있는 것 처럼, hidden layer에도 bias unit이 존재할 수 있습니다.
신경망 표기법에 대해 설명합니다.
- a i ^(j) : j층의 i번째 활성화 함수. ex) a 1 (2) = 2번층의 첫번째 활성화 함수
- theta^(j) : j층의 파라미터 벡터. j층에서 j+1층으로 넘어갈 때 적용되는 파라미터
- s j : j층의 유닛 수 ex) s 1 = 1번층의 유닛 수 : 3
신경망을 계산하는 방법입니다. 각 활성화 함수는 vectorization된 theta와 input vector입니다.
즉 , a ^(2) = g(theta^(1) * X) 입니다. 이 때 g(x) 는 시그모이드 함수입니다.
만약 theta^(j) 의 차원을 알고 싶다면 s (j+1) X (s (j) + 1) 입니다. (표현하기 힘드네요. 위 사진 참고 바랍니다.)
theta^(1) 의 차원은 3 X 4 입니다. a ^(2) 벡터는 3차원 벡터이고 X는 4차원 벡터(x0을 포함하셔야 합니다.) 이기 때문에 theta^(1)은 3X4 행렬이 되어야 하는 것이죠. vectorization 계산을 하려면 차원을 맞춰주어야 하기 때문에 한번 손으로 써보시면 자연스럽게 이해되실 것 입니다.
활성화 함수를 구하는데 쓰인 theta^(1) * X 부분을 z로 표현하도록 합니다. X도 활성화 함수로 대체합니다. 그러면 z^(2) = theta^(1) * a^(1) 으로 표현됩니다. a^(2) = g(z^(2)) 이 되겠죠. bias unit a 0 ^(2) 를 추가합니다. 그렇다면
z^(3) = theta^(2) * a^(2) 이고 , a^(3) = g(z^(3)) 입니다. 따라서 z는 특정 뉴런으로 들어가는 입력과 파라미터의 곱으로 이루어진 선형 조합입니다. 이 값이 가설 함수의 출력이 됩니다.
a^(3)은 output layer의 유일한 유닛이면서 활성화 함수가 되는 한가지 값입니다. 이렇게 input layer 에서 부터 output layer로 계산하는 방식을 순전파(Forward Propagation) 이라고 합니다. 층을 넘어갈 수록 파라미터 벡터에 따라 활성화 함수들이 학습됩니다. 이로 인하여 더 나은 가설을 만들 수 있습니다.
혼자서 강의를 듣고 정리한 것이니 틀린 점이 있다면 언제든지 지적 부탁드립니다 :)
'Courses > Andrew Ng - Machine Learning' 카테고리의 다른 글
[Week 5] Cost Function and Backpropagation (0) 2022.01.10 [Week 4] Neural Networks - Applications (0) 2022.01.08 [Week 3] Logistic Regression Model (0) 2021.12.30 [Week 3] Classification and Representation (0) 2021.12.29 [Week 2] Normal Equation (0) 2021.12.20