티스토리 뷰
2. Neural Networks / L1. Introduction to Neural Networks - Perceptron Algorithm
chrisysl 2018. 6. 26. 17:39Perceptron Algorithm
- Perceptron Trick에 대해 이미 배웠으므로 퍼셉트론 알고리즘을 구현할 준비가 다 되었다.
- 임의의 경계선을 그었을때 점 4개는 good, 점 2개는 come closer의 상황에 놓이게 된다.
- 우측에 놓인 mis-point에 맞춰 경계선을 수정하였다.
- 이번엔 좌측만이 mis-point로 남게 된다.
- 마찬가지로 좌측에 놓인 mis-point에 맞춰 perceptron-trick에 의거, 경계선을 수정해주면
- 모든 점들이 correct한 상태로 놓이게 된다.
- 이 알고리즘의 pseudo code를 작성해보자면,
- 가장먼저 랜덤한 weights를 가진 경계선으로 시작한다. (Wx + b)
- 그다음 잘못 분류된 점들에 대해 좌표값을 얻어두고, (x1, ... , xn)
- 만약 prediction이 0 인 경우 (즉, Positive-point 인데, Negative-area에 위치한 경우)
- i는 1부터 n까지 가중치(weights) Wi를 Wi + a*xi로 변경시켜줌
- 마찬가지로 bias에 해당하는 b를 b + a로 변경시켜준다.
- 만약 prediction이 1 인 경우 (즉, Negative-point 인데, Positive-area에 위치한 경우)
- i 는 1부터 n까지 가중치(weights) Wi를 Wi - a*xi로 변경시켜줌
- 마찬가지로 bias에 해당하는 b를 b - a로 변경시켜준다.
- 위의 과정을 에러가 없을때까지 반복하면 된다.
- 또는 없을 수 없다면 가장 적은 수의 에러 까지 반복한다.
- 또는 그냥 간단하게 한 1000번 정도 반복해라 라고 얘기해주면 된다.
Coding the Perceptron Algorithm
- 각 점들은 (p, q)
- label : y
- prediction : yHat
- yHat = step(w1x1 + w2x2 + b)
- 만약 점이 올바르게 분류되어있으면 아무것도 안함.
- 만약 점이 positive로 분류되어있는데, negative label이라면 (w1, w2, b)에서 각각 (a*p, a*q, a*1)를 빼준다(subtract).
- 만약 점이 negative로 분류되어있는데, positive label이라면 (w1, w2, b)에서 각각 (a*p, a*q, a*1)를 더해준다(add).