๐Ÿ“• ํผ์…‰ํŠธ๋ก  - ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹ 2์žฅ

๐Ÿ“Œ 01. ํผ์…‰ํŠธ๋ก ์ด๋ž€?

  • ์ดˆ๊ธฐ์˜ ์ธ๊ณต ์‹ ๊ฒฝ๋ง
  • ๋‹ค์ˆ˜์˜ ์‹ ํ˜ธ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ํ•˜๋‚˜์˜ ์‹ ํ˜ธ๋ฅผ ์ถœ๋ ฅ
    0: ์‹ ํ˜ธ๊ฐ€ ํ๋ฅด์ง€ ์•Š๋Š”๋‹ค/ 1: ์‹ ํ˜ธ๊ฐ€ ํ๋ฅธ๋‹ค


๐Ÿ‘‰ w ๋Š” ๊ฐ€์ค‘์น˜/ ์›์€ ๋‰ด๋Ÿฐ (ํ˜น์€ ๋…ธ๋“œ)/ theta๋Š” ์ž„๊ณ„๊ฐ’
๐Ÿ‘‰ ๊ฐ€์ค‘์น˜๊ฐ€ ํด์ˆ˜๋ก ๊ฐ•ํ•œ ์‹ ํ˜ธ


๐Ÿ“Œ 02. ๋…ผ๋ฆฌํšŒ๋กœ

1) AND ๊ฒŒ์ดํŠธ

x_1x_2y
000
100
010
111

ex. (w1, w2, theta) = (0.5, 0.5, 0.7)


2) NAND ๊ฒŒ์ดํŠธ

x_1x_2y
001
101
011
110

ex. (w1, w2, theta) = (-0.5, -0.5, -0.7)

3) OR ๊ฒŒ์ดํŠธ

x_1x_2y
000
101
011
111

ex. (w1, w2, theta) = (0.5, 0.5, 0.2)


๐Ÿ“Œ 03. ํŽธํ–ฅ


๐Ÿ‘‰ b๋Š” ํŽธํ–ฅ (=bias)

๐Ÿง ๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ์˜ ๊ตฌ๋ถ„

๊ฐ€์ค‘์น˜(w): ์ž…๋ ฅ ์‹ ํ˜ธ๊ฐ€ ๊ฒฐ๊ณผ์— ์ฃผ๋Š” ์˜ํ–ฅ๋ ฅ(์ค‘์š”๋„)์„ ์กฐ์ ˆํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜
ํŽธํ–ฅ(b): ๋‰ด๋Ÿฐ์ด ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ํ™œ์„ฑํ™”(๊ฒฐ๊ณผ๋กœ 1์„ ์ถœ๋ ฅ)ํ•˜๋Š๋ƒ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜


๐Ÿ“Œ 04. ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ํ•˜๊ธฐ

  • ํŽธํ–ฅ ์น˜ํ™˜ x
def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2

    if tmp <= theta:
    	return 0
    elif tmp > theta:
    	return 1
  • ํŽธํ–ฅ ์น˜ํ™˜ o
def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b

    if tmp <= 0:
    	return 0
    else:
    	return 1

๐Ÿ‘‰ NAND, OR ๋ชจ๋‘ AND์™€ ๊ฐ€์ค‘์น˜(w์™€ b)๋งŒ ๋‹ค๋ฆ„


๐Ÿ“Œ 05. XOR

  • ๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ: x1๊ณผ x2 ์ค‘ ํ•œ ์ชฝ์ด 1์ผ ๋•Œ๋งŒ 1์„ ์ถœ๋ ฅ
x_1x_2y
000
101
011
110

ex. (w1, w2, b) = (1.0, 1.0, -0.5)


๐Ÿค” ๋‚ด๊ฐ€ ๋…ผ๋ฆฌํšŒ๋กœ์—์„œ XOR๋งŒ ๋”ฐ๋กœ ๋บ€ ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ?

โžก XOR์€ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์œผ๋กœ ๊ตฌํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ!

1) AND, NAND, OR : ๋‹จ์ธต ํผ์…‰ํŠธ๋ก 

  • ์ง์„ ์œผ๋กœ ๋‚˜๋ˆ ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ธต ํผ์…‰ํŠธ๋ก ์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
  • ์„ ํ˜•์ 

2) XOR: ๋‹ค์ธต ํผ์…‰ํŠธ๋ก 

  • ์ง์„  ํ•˜๋‚˜๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ -> ๋‹จ์ธต ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ x
  • ์ธต์„ ๋” ์Œ“์•„์„œ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก ์œผ๋กœ ๊ตฌํ˜„ o
  • ๊ณก์„ , ๋น„์„ ํ˜•์ 

๐Ÿ‘‰


๐Ÿ“Œ 06. XOR ๊ตฌํ˜„ํ•˜๊ธฐ

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

โžก x1, x2๋Š” NAND์™€ OR ์˜ ์ž…๋ ฅ
โžก s1, s2 ๋Š” NAND์™€ OR์˜ ์ถœ๋ ฅ์ด์ž AND์˜ ์ž…๋ ฅ
โžก y๋Š” AND์˜ ์ถœ๋ ฅ

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ