๊ด€๋ฆฌ ๋ฉ”๋‰ด

Done is Better Than Perfect

[๋”ฅ๋Ÿฌ๋‹] 1. Perceptron ๋ณธ๋ฌธ

๐Ÿค– AI/Deep Learning

[๋”ฅ๋Ÿฌ๋‹] 1. Perceptron

jimingee 2024. 6. 5. 21:34

 

9์›” ์„์‚ฌ ์ž…ํ•™ ์ „ ๊นŒ์ง€ ๋ชฉํ‘œ๊ฐ€ ์žˆ๋‹ค.

๋”ฅ๋Ÿฌ๋‹ ๋…ผ๋ฌธ์„ ๋ณด๊ณ , ๋…ผ๋ฌธ์„ ์žฌํ˜„(reproduction) ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ฝ”๋”ฉ์‹ค๋ ฅ์„ ํ‚ค์šฐ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋™์•ˆ์€ ์ด๋ก  ์ฑ…, ์ˆ˜ํ•™์ฑ…์„ ๋ณด๊ณ  ์ˆ˜์‹์— ๋” ์ต์ˆ™ํ•ด์ ธ ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์•˜๋Š”๋ฐ, ์ด์ œ๋Š” ์ฝ”๋”ฉ ๋Šฅ๋ ฅ๋„ ํ‚ค์šฐ๋Š” ๊ฒƒ์ด ์—ฌ๋ฆ„ ๋ฐฉํ•™ ๋™์•ˆ์˜ ๋ชฉํ‘œ์ด๋‹ค.


 

 

 

๋”ฅ๋Ÿฌ๋‹ : ์ธ๊ณต์‹ ๊ฒฝ๋ง์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ปดํ“จํ„ฐ์—๊ฒŒ ์‚ฌ๋žŒ์˜ ์‚ฌ๊ณ ๋ฐฉ์‹์„ ๊ฐ€๋ฅด์น˜๋Š” ๋ฐฉ๋ฒ•

์ธ๊ณต์‹ ๊ฒฝ๋ง์˜ ํŠน์ง• : ๋ชจ๋ธ ์Šค์Šค๋กœ ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ์„ ํ•™์Šตํ•˜์—ฌ ์ง€๋„ ํ•™์Šต, ๋น„์ง€๋„ ํ•™์Šต ๋ชจ๋‘ ์ ์šฉ ๊ฐ€๋Šฅ

 

 

 

1. ํผ์…‰ํŠธ๋ก  : ์ดˆ๊ธฐ ํ˜•ํƒœ์˜ ์‹ ๊ฒฝ๋ง

 

 

 

2. ํ™œ์„ฑํ™” ํ•จ์ˆ˜ : ๊ฐ ๋‰ด๋Ÿฐ์˜ ์ถœ๋ ฅ ์‹ ํ˜ธ๋ฅผ ๊ฒฐ์ •

  • ์ž…๋ ฅ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์•„๋“ค์—ฌ ๋น„์„ ํ˜• ๋ณ€ํ™˜ ์ˆ˜ํ–‰, ๋ณ€ํ™˜๋œ ์ถœ๋ ฅ์„ ๋‹ค์Œ ์ธต์œผ๋กœ ์ „๋‹ฌ.
  • ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” ์‹ ๊ฒฝ๋ง์˜ ํ•™์Šต ๋Šฅ๋ ฅ๊ณผ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์คŒ.

 

ํ™œ์„ฑํ™” ํ•จ์ˆ˜์˜ ์—ญํ•  : 

 

  • ๋น„์„ ํ˜•์„ฑ ๋ถ€์—ฌ: ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” ์‹ ๊ฒฝ๋ง์— ๋น„์„ ํ˜•์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ํŒจํ„ด ํ•™์Šต ๊ฐ€๋Šฅ. ๋น„์„ ํ˜•์„ฑ์ด ์—†๋‹ค๋ฉด, ์‹ ๊ฒฝ๋ง์€ ๋‹จ์ˆœํ•œ ์„ ํ˜• ๋ณ€ํ™˜๋งŒ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜์–ด ๋‹ค์ธต ๊ตฌ์กฐ์˜ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง.
  • ์‹ ๊ฒฝ๋ง์˜ ์ถœ๋ ฅ ๋ฒ”์œ„ ์ œํ•œ: ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” ์ถœ๋ ฅ๊ฐ’์„ ํŠน์ • ๋ฒ”์œ„๋กœ ์ œํ•œํ•˜์—ฌ ์•ˆ์ •์ ์ธ ํ•™์Šต์„ ๋„์™€์คŒ.
  • ๊ฒฝ์‚ฌ ํ•˜๊ฐ•๋ฒ•์„ ํ†ตํ•œ ํ•™์Šต ๊ฐ€๋Šฅ: ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋Š” ๋ฏธ๋ถ„ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ, ์—ญ์ „ํŒŒ(Backpropagation)๋ฅผ ํ†ตํ•ด ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Œ.

 

์ฃผ๋กœ, ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜(Sigmoid Function), ๋ ๋ฃจ ํ•จ์ˆ˜(ReLU, Rectified Linear Unit), ๋ฆฌํ‚ค ๋ ๋ฃจ ํ•จ์ˆ˜(Leaky ReLU), ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜(Softmax Function) ๋“ฑ์ด ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ๋จ

 

 

ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์„ ํƒ ๊ธฐ์ค€ : ๊ฐ๊ฐ์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋งˆ๋‹ค ์žฅ,๋‹จ์ ์ด ์žˆ์œผ๋ฏ€๋กœ ์‹คํ—˜์„ ํ†ตํ•ด ๊ฐ ๋ฌธ์ œ์— ์ ํ•ฉํ•œ ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์„ ํƒํ•ด์•ผ ํ•จ

  • ๋ฌธ์ œ์˜ ํŠน์„ฑ: ๋ถ„๋ฅ˜ ๋ฌธ์ œ์˜ ์ถœ๋ ฅ์ธต์—์„œ๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋ฅผ, ํšŒ๊ท€ ๋ฌธ์ œ์˜ ์ถœ๋ ฅ์ธต์—์„œ๋Š” ์„ ํ˜• ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ.
  • ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ: ReLU๋‚˜ Leaky ReLU์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๋ฅผ ์™„ํ™”.

 

 

3. ํผ์…‰ํŠธ๋ก  ์„ ํ˜• ๋ถ„๋ฅ˜๊ธฐ

 

3.1 ๋‹จ์ธต ํผ์…‰ํŠธ๋ก  (single layer perceptron)

๋‹จ์ธต ํผ์…‰ํŠธ๋ก  (single layer perceptron)

  • [ ํผ์…‰ํŠธ๋ก  > ์ธ๊ณต์‹ ๊ฒฝ๋ง > ์ธ๊ณต์ง€๋Šฅ ] : ํผ์…‰ํŠธ๋ก ์€ ์ธ๊ณต์‹ ๊ฒฝ๋ง์˜ ๋…ผ๋ฆฌํšŒ๋กœ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•จ
  • ์„ ํ˜• ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ ํผ์…‰ํŠธ๋ก  : ๋‹จ์ธต ํผ์…‰ํŠธ๋ก  (single layer perceptron) [์˜ˆ, AND, OR, NAND, NOR gate ] 

์ฑ… : ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹

 

 

[ AND gate ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ ]

def AND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.7
    tmp = np.sum(x*w) + b
    if tmp <= 0:
        return 0
    else:
        return 1
    
print(AND(0,0)) # 0
print(AND(0,1)) # 0
print(AND(1,0)) # 0
print(AND(1,1)) # 1

 

 

[ NAND gate ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ ]

def NAND(x1,x2):
    x = np.array([x1,x2])
    w = np.array([-0.5,-0.5])
    b = 0.7
    tmp = np.sum(x*w) + b
    if tmp <= 0:
        return 0
    else:
        return 1
    
print(NAND(0,0)) # 1
print(NAND(0,1)) # 1
print(NAND(1,0)) # 1
print(NAND(1,1)) # 0

 

 

[ OR gate ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ ]

def OR(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.2
    tmp = np.sum(x*w) + b
    if tmp <= 0:
        return 0
    else:
        return 1
    
print(OR(0,0)) # 0
print(OR(0,1)) # 1
print(OR(1,0)) # 1
print(OR(1,1)) # 1

 

 

 

3.2 ๋‹ค์ธต ํผ์…‰ํŠธ๋ก  (MLP, multi layer perceptron)

๋‹ค์ธต ํผ์…‰ํŠธ๋ก  (MLP, multi-layer perceptron)

  • ํ•˜๋‚˜์˜ ์„ (๋‹จ์ธต ํผ์…‰ํŠธ๋ก )์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ ๋“ฑ์žฅ ๐Ÿ‘‰ ์ธต์„ ์Œ“์•„ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก (multi-layer perceptron)์œผ๋กœ ๋ถ„๋ฅ˜
  • ๋‹จ์ธต ํผ์…‰ํŠธ๋ก ์„ ์—ฌ๋Ÿฌ์ธต์œผ๋กœ ์Œ“์•„ ๋‹ค์ธต ํผ์…‰ํŠธ๋ก  ํ˜•์„ฑ

 

  • ๋น„์„ ํ˜•์  ๋…ผ๋ฆฌ ๊ฒŒ์ดํŠธ : XOR gate (๋ฐฐํƒ€์  ๋…ผ๋ฆฌํ•ฉ์ด๋ผ๋Š” ๋…ผ๋ฆฌํšŒ๋กœ , ๋‘ ์ž…๋ ฅ๊ฐ’์ค‘ ํ•œ์ชฝ์ด 1 ์ผ๋•Œ๋งŒ 1์„ ์ถœ๋ ฅ)

 

  • AND, NAND, OR๊ฒŒ์ดํŠธ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ XOR ๊ฒŒ์ดํŠธ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.

  • hidden layer : ์ž…๋ ฅ์ธต๊ณผ ์ถœ๋ ฅ์ธต ์‚ฌ์ด์˜ ๋ชจ๋“  layer
  • hidden layer๊ฐ€ 3์ธต ์ด์ƒ์ผ ๊ฒฝ์šฐ, ๊นŠ์€ ์‹ ๊ฒฝ๋ง์ด๋ผ๋Š” ์˜๋ฏธ์˜ deep learning ์‚ฌ์šฉ

 

[ XOR gate ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ : ์•ž์„œ ์ •์˜ํ•œ ํ•จ์ˆ˜ AND, NAND, OR๋ฅผ ์Œ“์•„์„œ ๊ตฌํ˜„ ]

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

print(XOR(0,0)) # 0
print(XOR(1,0)) # 1
print(XOR(0,1)) # 1
print(XOR(1,1)) # 0

 

 


๐Ÿ“š Reference

  • Deep Learning from Scratch 

https://search.shopping.naver.com/book/catalog/32486532054?cat_id=50010921&frm=PBOKMOD&query=%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0+%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94+%EB%94%A5%EB%9F%AC%EB%8B%9D&NaPm=ct%3Dlx1t69yw%7Cci%3D84c0fa976683484f928b8ee208841cf7b90d2fb3%7Ctr%3Dboknx%7Csn%3D95694%7Chk%3D0f9e78a9f597c02602d430aaf814fd648b987612

Comments