티스토리 뷰
Coursera에서 진행되는 Andrew Ng 교수님의 Machine Learning 강의를 수강한 후 정리한 내용입니다.
Non-linear Hypotheses

위 사진처럼 데이터가 분포해있을 경우, non-linear boundary classification이 필요합니다.
하지만, boundary를 만들기 위해서 logistic regresion을 이용할 경우 매우 비효율적 결과가 나타납니다.
한 예로 100개의 feature가 있는 상황에서 2차항들을 포함하도록 했을 때 hypothesis를 거친 새로운 feature의 개수는 5,050개가 됩니다. 이와 같은 hypothesis는 O(n^2)로 매우 많은 시간이 소요될 뿐만 아니라 overfitting 될 수 있습니다.
Model Representation 1

위 사진에서 dendrite는 뉴런으로 신호가 들어오는 입력 단자이고 axon은 뉴런에서 신호가 나가는 출력 단자입니다.
즉, 뉴런은 입력 단자로부터 들어온 신호를 출력 단자로 전달해주는 역할을 수행합니다.

하나의 뉴런을 모델링하면 위와 같습니다.
입력 단자의 역할을 했던 dendrite는 input features로, 출력 단자의 역할을 했던 axon은 activation function의 output으로 나타납니다.
activation function은 sigmoid function 혹은 logistic function이라고 불리기도 합니다.
Θ는 weight(가중치)를 의미하고 function의 parameter라고 생각하면 좋습니다.

하나의 뉴런이 아닌 여러 개의 뉴런을 모델링하면 위와 같습니다.
여러 개의 layer와 layer안에 있는 unit으로 구성됩니다.
첫 번째 layer는 input layer라고 부르고 마지막 layer는 output layer라고 부릅니다.
input layer와 output layer 사이에 있는 layer들은 hidden layer라고 부릅니다.
또, hidden layer에 속해있는 unit들은 activation unit이라고 부릅니다.

activation unit의 값은 a로 나타냅니다.
위에서 설명하는 것과 같이 a에 layer 번호와 unit 번호를 명시해 특정 unit을 가리킵니다. a의 값이 의미하는 것은 각 unit에서 계산된 output입니다.
Θ는 layer를 다른 layer로 mapping 하는 함수를 조절하는 가중치 행렬입니다.

activation unit의 값을 계산하는 방법은 위와 같습니다.
input값과 해당 parameter(weight) 값을 각각 곱한 후 그 값들의 총합을 logistic function에 대입합니다.
이때 input x0은 bias unit입니다.
bias unit은 항상 1의 값을 가지는 node로, input node엔 포함되지만 output 노드에는 포함되지 않습니다.
위에서 언급한 바와 같이 Θ는 가중치 행렬을 의미합니다.
layer 1에서 layer 2로의 mapping을 의미하는 Θ(1) 행렬은 3X4차원으로 구성되어 있습니다.
3X3이 아닌 이유는 bias unit이 존재하기 때문입니다.
만약 각 layer에 포함된 node의 개수가 3이 아닌 다른 수 n이었다면 Θ(layer 번호)는 nX(n+1) 행렬이 됩니다.
output node의 값을 구하는 과정도 이와 동일합니다.
h(hypothesis)는 x를 받아 y를 예측하는 함수입니다. 그리고 이 h는 parameter(Θ)에 의해 조절됩니다. 따라서 parameter를 변화시키면 x에서 y로 mapping 하는 h 함수가 달라지게 됩니다.
Model Representation 2
함수를 벡터화시키기 위해 변수 z를 정의합니다.
z는 activation unit의 값을 계산할 때 사용했던 g 함수에 대입되었던 값을 의미합니다.

위 수식을 보시면 쉽게 이해하실 수 있습니다. 따라서 x, z를 벡터화시켜 표현하면 아래와 같습니다.

식을 간단히 나타내기 위해 x = a(1)이라 가정하고 계산한 결과는 아래와 같습니다.

위 모든 과정은 layer가 3일 때를 가정합니다.
물론 layer가 3이 아니라 더 많더라도 함수 h(hypothesis)를 만들어 낼 수 있습니다.
각 layer 내의 unit 수가 달라도 충분히 가능합니다.
Examples and Intuitions 1
Neural Networks에서 non-linear classification가 활용되는 방법을 살펴보도록 하겠습니다.
AND 연산에 non-linear를 적용하면 아래와 같습니다.

input인 x1, x2은 binary 값을 가집니다.
이때 Θ(1) = [-30, 20, 20]이라 가정한다면 z(2) = -30 + x1 + x2가 성립합니다.
즉, hΘ(x) = g(-30 + x1 + x2)입니다.
따라서, logistic function g에 의해
x1 = 0 and x2 = 0, then g(-30) = 0
x1 = 0 and x2 = 1, then g(-10) = 0
x1 = 1 and x2 = 0, then g(-10) = 0
x1 = 1 and x2 = 1, then g(10) = 1
위와 같은 식이 성립합니다.
Examples and Intuitions 2
weight를 달리하면 AND 연산 이외에도 NOR, OR와 같은 다른 연산을 실행할 수 있습니다.
AND : Θ(1) = [-30, 20, 20]
NOR : Θ(1) = [10, -20, -20]
OR : Θ(1) = [-10, 20, 20]
이번에는 XNOR 연산을 실행해보겠습니다. 2개의 hidden layer가 사용됩니다.
* XNOR 연산이란, input이 모두 0이거나 1일 때만 True를 return 하는 연산입니다.

weight 행렬 Θ(1), Θ(2)는 아래와 같습니다.


Θ(1)의 1행은 AND 연산에 사용되는 weight이고 2행은 NOR 연산에 사용되는 weight입니다.
Θ(2)의 1행은 OR 연산에 사용되는 weight입니다.
Θ(1), Θ(2)를 적용하면 XNOR 연산을 실행할 수 있습니다.
Multiclass Classification
특정 이미지가 보행자, 자동차, 오토바이, 트럭 중 어떤 것을 의미하는지 나타내도록 하려 할 때, multiclass classification을 사용합니다.

위의 경우, hΘ(x)는 1X4 행렬로 이뤄집니다.
따라서 이 행렬은 4개의 값을 가질 수 있는데, 4개 중 단 하나의 값만이 1이고 나머지 값은 0이 되도록 설정합니다.
만약 1행의 값이 1이라면 input 이미지는 보행자라고 분류된 것입니다.
마찬가지로, 2행의 값이 1이면 자동차, 3행의 값이 1이면 오토바이, 4행의 값이 1이면 트럭이라고 분류된 것입니다.
'Dev.Coursera > Machine Learning' 카테고리의 다른 글
Neural Networks : Learning (0) | 2019.08.21 |
---|
- Total
- Today
- Yesterday
- 호제법
- Xcode
- aws
- count
- dp
- BFS
- isempty
- Swift
- 서머코딩
- 삼성역량테스트
- 시뮬레이션
- c++
- Programmers
- Collection
- ios
- 코딩테스트
- datastructure
- 프로그래머스
- 알고리즘
- 구슬탈출
- 깊이우선탐색
- 자료구조
- SummerCoding
- 스위프트
- algorithm
- 이진트리
- 컬렉션
- dfs
- 백준
- ec2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |