인공지능 공부
인공지능 6주차
NaZZU
2025. 4. 8. 15:43
퍼셉트론 (Perceptron)
예제1) 입력이 (1, 0), w1 = 1, w2 = 1, b = -1.5 일 경우의 y의 값은? (계단 함수는위의 그림을 참조)
x1*w1 + x2*w2 + b = 1*1 + 0*1 -1.5 = -0.5
y = 0
예제 2) 입력이 (1, 1), w1 = 1, w2 = 1, b = -1.5 일 경우의 y의 값은?
x1*w1 + x2*w2 + b = 1*1 + 1*1 -1.5 = 0.5
y = 1
예제 2) 입력이 (1, 1), w1 = 1, w2 = 1, b = -0.5 일 경우의 y의 값은?
x1*w1 + x2*w2 + b = 1*1 + 1*1 -0.5 = 1.5
y = 1
퍼셉트론의 논린 연산
- AND 연산
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
epsilon = 0.0000001
def perceptron(x1, x2):
w1, w2, b = 1.0, 1.0, -1.5
sum = x1 * w1 + x2 * w2 + b
if sum > epsilon :
return 1
else :
return 0
print(perceptron(0, 0))
print(perceptron(1, 0))
print(perceptron(0, 1))
print(perceptron(1, 1))
결과 : 0
0
0
1
퍼셉트론도 scikit에서 학습이 가능하다!
from sklearn.linear_model import Perceptron
X = [[0, 0], [1, 0], [0, 1], [1, 1]]
y = [0, 0, 0, 1]
clf = Perceptron(tol=1e-3, random_state=0)
clf.fit(X, y)
print(clf.predict(X))
결과 : [0 0 0 1]
- OR 연산
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
from sklearn.linear_model import Perceptron
X = [[0, 0], [1, 0], [0, 1], [1, 1]]
y = [0, 1, 1, 1]
clf = Perceptron(tol=1e-3, random_state=0)
clf.fit(X, y)
print(clf.predict(X))
결과 : [0, 1, 1, 1]
- XOR 연산
x1 | x2 | y |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
from sklearn.linear_model import Perceptron
X = [[0, 0], [1, 0], [0, 1], [1, 1]]
y = [0, 1, 1, 0]
clf = Perceptron(tol=1e-3, random_state=0)
clf.fit(X, y)
print(clf.predict(X))
결과 : [0, 0, 0, 0]
퍼셉트론으로 XOR문제를 해결할 수 없다.
이를 해결하기 위해 다층 퍼셉트론이 필요하다.
행렬 곱셈
예제 1)
) 1*3 + 2*2 + 3*1 = 10
2) 1*2 + 2*0 + 3*3 = 11
3) 1*1 + 2*3 + 3*1 = 10
활성화 함수
계단 함수는 입력 신호의 총합이 0을 넘으면 1을 출력하고, 그렇지 않으면 0을 출력하는 함수이다
- 활성화 함수 (시그모이드)
- 활성화 함수 (Rectifed Linear Unit function)
- 활성화 함수 (Tanh)
다층 퍼셉트론
입력층과 출력층 사이에 은닉층이 존재
순방향 패스
- 입력 신호가 입력층 유닛에 가해지고, 이들 입력 신호가 은닉층을 통하여 출력층으로 전파되는 과정
역방향 패스
- 신경망 내부의 가중치는 오차 역전파 방법을 사용해 수정