인공지능 공부

인공지능 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)

 

 


다층 퍼셉트론 

입력층과 출력층 사이에 은닉층이 존재

 

 

순방향 패스

  • 입력 신호가 입력층 유닛에 가해지고, 이들 입력 신호가 은닉층을 통하여 출력층으로 전파되는 과정

역방향 패스

  • 신경망 내부의 가중치는 오차 역전파 방법을 사용해 수정