[머신러닝 이론] 8. Neural Networks(신경망) 1 - 앤드류응 강의
순서가 있는 게시물 입니다.
[머신러닝 이론] 8. Neural Networks(신경망) 1 - 앤드류응 강의
[머신러닝 이론] 8. Neural Networks(신경망) 2 - 앤드류응 강의 (준비중)
목표
- 인공신경망 알고리즘 대략적인 이해
- 인공신경망의 장점을 이해
- 순전파의 대략적인 이해
8. Neural Networks
8.1. Motivations : Non-linear Hypothesis
신경망을 배워야하는 이유는?
우리는 이미 선형회귀와 로지스틱회귀로 지도학습 알고리즘을 배웠다. 신경망 알고리즘은 보다 복잡하게 느낄수 있지만 꼭 배워야하는 알고리즘 중 하나이다. 그러므로 동기부여를 하고자한다.
선형회귀, 로지스틱회귀만으로 해결하기 어려운 것을 예제들로 확인해보자.
아래 지도학습의 분류문제가 있다. 아래와 같은 로지스틱 회귀는 충분히 많은 고차 다항식을 포함하여 구불구불한 적당한 가설을 얻을수 있다. 이 방법은 피처가 x1, x2 두개일때 잘 작동한다. 하지만 많은 머신런닝 문제는 피처를 두개 보다 훨씬더 많이 필요로 할 수 있다.
하나.
주택가격 예측 예시에서도 피처를 방의개수, 주택크기 이외에 더많은 피처를 생각할수 있다. 층수, 주택 나이 등등 100개가 더 있다고 가정하고 이차항까지 포함한다면 x1+ x2 + ... x100^2의 피처가 생성되고 모두 센다면 5,000개의 피처로 늘어난다. 피처의 개수가 많으면 비선형 가설에는 적합하지 않다.
둘.
머신러닝 문제들에서 피처의 개수는 꽤 크다. 컴퓨터 비전 학습 문제를 살펴보자. 예를들어 50x50픽셀 RGB이미지를 학습한다고 가정해보자. 50x50(픽셀)x3(RGB) = 7500개의 피처를 갖게되고 이차항을 포함하는 비선형 가설을 세운다면 300만개의 피처를 갖게된다. 이 피처의 수는 매우크므로 엄청난 연산비용을 필요로하게 된다.
따라서 피처의 개수n이 클때 2차항, 3차항을 포함하여 복잡한 비선형 가설을 세우는 것은 좋지않다. 하지만 신경망은 피처의 개수가 많을때 복잡한 비선형 가설을 학습할때 유용한 알고리즘이다.
[잡담] 뇌를 모방하는 이유는
뇌는 매우 다양하고 놀라운 일들을 한다. 때문에 뇌를 모방하는 알고리즘을 지속적으로 연구했고 '신경 재배선 실험' 이라는 연구로 뇌가 학습하는 방법이 단 하나라는 것을 발견했다.
'신경 재배선 실험'은 다음과 같다. 파란색 동그라미 부분은 청각 피질인데, 귀 - 청각필질의 연결을 끊고 눈-청각피질을 연결했다. 그런데 놀랍게도 청각피질이 시각능력을 하게됐다. 눈-촉각 피질의 연결에서도 시간능력을 보였다.
하나의 뇌조직이 시각, 청각 및 촉각을 처리했다. 즉, 단 하나의 알고리즘(뇌)으로 모든 것을 처리 할수 있다는 의미이다. 뇌가 하는 수천개의 작업을 프로그램으로 구현하는 것 보다. 뇌가 하는 학습 방법을 알아내는 것이 어쩌면 우리가 해야할 일 일지 모른다.
8.2. Neural Network : Model Representation
신경망이란 ?
신경망은 뇌속의 뉴런과 뉴런들이 통신하는 방법을 모방했다. 뉴러은 다수의 입력선이 있고 이를 수상돌기(dendrites)라고 한다. 또한 다른 뉴런에게 신호를 전송하는 출력선을 축삭돌기(Axon)이라고 한다. 많은 데이터를 입력선으로 받아 계산하고 하나의 출력선을 통해 다른 뉴런에 전달한다.
위 뉴런을 수학적으로 모델화 한것을 인공뉴런 혹은 퍼셉트론이라고 한다. 그리고 인공 뉴런들이 네트워크를 형성한 모습이 인공신경망이다.
위의 통신방법을 아래와 같이 도식화 할수 있다. 원들은 인공 뉴런(퍼셉트론으로 부름)이다. 인공 뉴런은 계산을 한 후 출력값을 또 다른 뉴런의 입력단자로 전달한다. 인공 뉴런들은 시그모이드(1/(1+e^(-θ^TX))) 활성함수를 갖는다. 지금까지 가설모델의 파라미터를 θ로 표현했듯이 그대로 사용한다. θ를 가중치라 부르기도한다.
목표 remind
인공신경망의 최종 목표는 선형회귀나 로지스틱회귀나 마찬가지로 최적의 θ를 찾는 것이다. 계속되는 설명은 θ를 정해진 값 처럼 설명하지만 임의 θ를 초기화하고 학습을 통해 최적의 θ를 찾는 것이다.
인공 신경망의 용어를 간략히 정리해보자.
여러개의 뉴런을 그룹으로 연결한 신경망으로 확인한다.
- 입력 유닛 : x0(바이어스), x1, x2, x3
- 은닉 유닛 : a0(바이어스), a1, a2, a3
- 출력유닛 : 마지막 노란색 유닛
- 입력층 : Layer1
- 은닉층 : Layer2
- 출력층 : Layer3
아래 계산식을 포함한 인공 신경망으로 확인해 보자
- ai^(j) : j층의 i 번째 유닛
- θ^(j) : j층에서 j+1로 출력값 전달할때 가중치
- sj : j층의 유닛수
- 입력층 : 3개의 입력유닛(x1,x2,x3)은 입력값을 그대로 출력값으로 사용한다.
- 은닉층 : 3개의 입력유닛(x1,x2,x3)과 바이어유닛(x0)을 가중치θ^(1)와 행렬곱하여 은닉층으로 입력한다. 전달된 값을 활성함수(시그모이드 함수)에 대입하여 출력값을 만든다.
- 출력층 : 3개의 은닉유닛(a1,a2,a3)과 바이어유닛(a0)을 가중치θ^(2)와 행렬곱하여 결과층으로 입력한다. 전달된 값을 활성함수(시그모이드 함수)에 대입하여 최종 출력값을 만든다.
* 그림상에는 바이어스 유닛이 없지만 보통 바이어스 유닛을 추가하여 계산한다.
이 과정을 계속해서 설명하므로 현재 완벽히 이해하지 않아도 괜찮다.
8.3. Neural Network : Model Representation2
인공신경망의 효율적인 계산을 위해 벡터화 구현을 설명한다.
오른쪽 계산식z는 특정뉴런으로 입력되는 입력값x에 가중치θ를 부여(연산)한 선형조합이다. θ (행렬곱) x 라고 볼수있다. 그렇게 전달받은 z를 시그모이드 함수g에 대입하여 다시 출력값을 만든다.
이러한 연산이 효율적으로 되려면 벡터화 구현이 필요하다. 입력층 4x1벡터를 은닉층 3x1벡터로 전달하려면 가중치θ는 4x3차원의 행렬을 가져야한다.
가중치를 전치시켜(θ^(T) = 3x4) 입력층(4x1)과 행렬곱을 한다면 3x1의 값을 얻을수 있다.
이렇게 인공신경망은 행렬 혹은 벡터로 계산한다.
위 처럼 입력층부터 출력층까지 순차적으로 계산하는 이 방법을 순전파라고 한다.
순전파 간단한 이해
순전파 관점에서 신경망이 무엇을 하고 있는지, 왜 신경망이 비선형 가설을 학습할때 도움이 되는지 알아보자.
여기 인공신경망이 있다. 왼쪽에 유닛을 가린 부분을 제외하면 로지스틱 회귀와 비슷한 가설을 세울수 있다. 신경망과 로지스틱 회귀의 차이점은 피처 x1,x2,x3를 그대로 사용하는 것이 아니라 새로운 피처 a1, a2, a3를 사용한다는 점이다.
로지스틱회귀 처럼 구불구불한 복잡한 가설을 세우기 위해 x1,x2,x3.. 등을 2차원 3차원함수로 피처를 변형시키는 것이 아니라. Layer1에서 Layer2로 매핑하면서 입력값의 모든 값을 가중치θ를 통해 학습한다. 이렇게 몇개의 Layer를 둔다면 모든 입력값을 학습한 Layer2, Layer2를 학습한 Layer3 ... 로 한번에 유연한 학습이 가능하게된다. 즉 순전파는 순차적으로 새로운 피처를 만들어 나가는 방법 정도로 이해하면 좋겠다.
8.4. Neural Network : Examples
인공신경망의 가설이 어떻게 값을 예측하는지 보자. 신경망으로 논리연산함수를 구현해본다. and논리 연산 함수를 만들어본다.
미리 최적의 가중치θ( -30, +20, +20)를 구해놓았다. 그러므로 최적의 가설 hθ(x) = g(-30 + 20x1 + 20x2)을 세울수있다. 이 상태로 x1, x2의 값을 대입해보자. +1항은 바이어스 항이다.
- (0,0) : 입력값은 -30이고 시그모이드 함수에 음수를 대입하게 되면 0이다.
- (0,1) : 입력값은 -10이고 시그모이드 함수에 음수를 대입하게 되면 0이다.
- (1,0) : 입력값은 -10이고 시그모이드 함수에 음수를 대입하게 되면 0이다.
- (1,1) : 입력값은 +30이고 시그모이드 함수에 양수를 대입하게 되면 1이다.
인공 신경망의 최적의 가설을 세웠고 결과도 적절하다.
XOR문제와 다층 퍼셉트론으로 해결
인공신경망으로 발전하기 전 인공뉴런 즉 퍼셉트론을 하나만 사용하던 시절이 있다. 그때 XOR문제에 직면하게 되는데 그 이유는 아래와 갔다. 하나의 퍼셉트론으론 하나의 선으로 밖에 분류를 할 수가 없었다.
하지만 은닉층을 추가 즉 다층 퍼셉트론을 구성하여 해결하였다.