Notice
Recent Posts
Recent Comments
ยซ   2025/06   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐ŸŒฒ์ž๋ผ๋‚˜๋Š”์ฒญ๋…„

ํผ์…‰ํŠธ๋ก  ๋ณธ๋ฌธ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

ํผ์…‰ํŠธ๋ก 

JihyunLee 2019. 2. 22. 14:58
๋ฐ˜์‘ํ˜•

ํผ์…‰ํŠธ๋ก ์ด๋ž€ ๋‹ค์ˆ˜์˜ ์‹ ํ˜ธ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ํ•˜๋‚˜์˜ ์‹ ํ˜ธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์€ ์ด๋ ฅ์œผ๋กœ 2๊ฐœ์˜ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์€ ํผ์…‰ํŠธ๋ก ์˜ ์ž…๋‹ˆ๋‹ค.

์›์„ ๋…ธ๋“œ, ๋˜๋Š” ๋‰ด๋Ÿฐ์ด๋ผ๊ณ  ๋ณด๋ฅด๊ณ  ์ž…๋ ฅ์‹ ํ˜ธ๊ฐ€ ๋‹ค์Œ ๋‰ด๋Ÿฐ์œผ๋กœ ์ „ํ•ด์งˆ๋•Œ๋Š” ๊ฐ€์ค‘์น˜๊ฐ€ ๊ณฑํ•ด์ ธ์„œ ์ „ํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ผ์ •ํ•œ ๊ฐ’(์ž„๊ณ„๊ฐ’=์„ธํƒ€)์ด์ƒ์ด๋ฉด 1์„ ์ถœ๋ ฅ, ์ž„๊ณ„๊ฐ’ ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์„ธํƒ€๋ฅผ -b๋กœ ์น˜ํ™˜ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹์ด ๋‚˜์˜ค๊ณ  b๋ฅผ ํŽธํ–ฅ ์ด๋ผ๊ณ ํ•ฉ๋‹ˆ๋‹ค.


ํผ์…‰ํŠธ๋ก  ๊ตฌํ˜„ํ•˜๊ธฐ

๋‹ค์Œ์€ ๊ฐ€์ค‘์น˜์™€ ์ž„๊ณ„๊ฐ’์„ ์ž„์˜๋กœ ์ž˜ ์กฐ์ ˆํ•ด์„œ ANDgate ๋ฅผ ํผ์…‰ํŠธ๋ก ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
##and gate
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
    
print(AND(1,1))
print(AND(1,0))
print(AND(0,0))
cs
์•„๋ž˜ ์„ธ print์˜ ๊ฒฐ๊ณผ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. and gate ๋Š” ์ž˜ ๊ตฌํ˜„์ด ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1
0
0

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ข€๋” ์ข‹๊ฒŒ ํ‘œํ˜„ํ•˜๋ ค๋ฉด numpy์˜ ๊ธฐ๋Šฅ์ผ ์ด์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
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
 
print(AND(1,1))
print(AND(1,0))
print(AND(0,0))
cs

๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๊ฐ’์€ 
1
0 
0
์œผ๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ์„ ์กฐ์ ˆํ•˜๋ฉด, nand ๊ฒŒ์ดํŠธ(and์™€ ์™„์ „ ๋ฐ˜๋Œ€) or ๊ฒŒ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#NAND gate
def NAND(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
 
 
#or gate
def OR(x1,x2):
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.2
    tmp = np.sum(w*x)+b
    if tmp <=0:
        return 0
    else :
        return 1
    
cs

ํผ์…‰ํŠธ๋ก ์˜ ํ•œ๊ณ„

ํผ์…‰ํŠธ๋ก ์€ AND, NAND, OR 3๊ฐ€์ง€์˜ ๋…ผ๋ฆฌ ํšŒ๋กœ๋Š” ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, XOR ๊ฒŒ์ดํŠธ๋Š” ๊ตฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํผ์…‰ํŠธ๋ก ์„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์œ„์—์„œ ๋งŒ๋“  ํผ์…‰ํŠธ๋ก ์€ ๋‘๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  1๊ณผ 0 ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



ํผ์…‰ํŠธ๋ก ์„ x์™€ y๊ฐ’์„ ์ธ์ˆ˜๋กœ ๋ฐ›์•„์„œ 0๋˜๋Š” 1์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ํ–ˆ์„๋•Œ, or, nand, and๋Š” ์ง์„ ์œผ๋กœ ๊ณต๊ฐ„์ด ๋ถ„ํ™œ๋˜์ง€๋งŒ, xor์€ ์ง์„ ์œผ๋กœ๋Š” 0๊ณผ 1์„ ๊ตฌ๋ถ„ํ•ด ๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋Š” ์ง์„ ์ด ์•„๋‹Œ ๋น„์„ ํ˜• ๊ทธ๋ž˜ํ”„๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ด๊ฒƒ์€ ๋‹ค์ธตํผ์…‰ํŠธ๋ก ์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.




๊ตฌํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1
2
3
4
5
def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y
cs


์ฐธ์กฐ

https://m.blog.naver.com/PostView.nhn?blogId=infoefficien&logNo=221069835408&proxyReferer=https%3A%2F%2Fwww.google.com%2F

๋ฐ˜์‘ํ˜•