인공신경망의 기초 : 퍼셉트론의 이해

인천과학예술영재학교 김현아, 최준영, 조인성

XNOR Gate에 대해 공부하고, 다층 퍼셉트론으로 구현해보자.

파이썬 코드를 이용해 구현해 보았다.

def step(x):

return 1 if x > 0 else 0

def XNOR(x1, x2):

# 은닉층 뉴런 n1

w11, w12, b1 = -2, -2, 3

n1_input = w11 * x1 + w12 * x2 + b1

n1 = step(n1_input)

# 은닉층 뉴런 n2

w21, w22, b2 = 2, 2, -1

n2_input = w21 * x1 + w22 * x2 + b2

n2 = step(n2_input)

w31, w32, b3 = 1, 1, -1

y_input = w31 * n1 + w32 * n2 + b3

y = step(y_input)

w4, b4=-2, 1

y_new=w4*y+b4

newy=step(y_new)

return newy

for x1 in [0, 1]:

for x2 in [0, 1]:

print(f"XNOR({x1}, {x2}) = {XNOR(x1, x2)}")

기존의 XOR 코드에다 뒤의 w4, b4를 이용하여 NOT을 붙여 준 다음 newy를 return하였다.

XNOR(0, 0) = 1

XNOR(0, 1) = 0

XNOR(1, 0) = 0

XNOR(1, 1) = 1

라는 결과가 나왔다.

CNN과 RNN의 작동 원리에 대해서 간단히 공부하고, 다층 퍼셉트론과 무엇이 다른지 비교해보자.

CNN(합성곱신경망)은 주로 이미지나 동영상 분석을 위해 활용된다. 합성곱 필터를 이용하여 입력의 국소적 부위의 특징을 찾아낸다. 동일한 필터를 이미지 전체에 적용하므로 속도가 빠르다.

RNN(순환신경망)은 자연어와 같이 순차 데이터를 처리하기 좋다. 왜냐하면 이전 시점의 출력을 다음 시점의 입력과 결합하기 때문이다. 또한 입력과 출력의 길이를 변경할 수 있다.

다층 퍼셉트론은 전의 노드의 출력이 다음 노드의 입력으로 전달되기 때문에 순전파로 분류된다. 출력층의 값과 실제 값의 차이가 오차 범위 내로 들어오도록 가중치를 계속 조절한다.

즉, CNN, RNN과 다층 퍼셉트론은 원리도, 사용되는 범위도 다르다.

본문의 예시처럼, 손글씨 숫자를 인식하고 무엇인지 판별하는 다층 퍼셉트론을 만들기 위해서는 입력이 어떻게 구성되어야 할지, 가중치는 어떤 기준으로 정할지 생각해보자.

입력은 이미지여야 하며, 예를 들면 50x50픽셀이며 0인 검은 픽셀과 1인 하얀 픽셀로 구성된 이미지를 생각해볼 수 있다. 가중치는 디지털 시계의 7-세그먼트 표시 방식처럼 위, 중간, 아래의 가로 획과 왼쪽, 오른쪽의 세로 획에 다르게 둘 수 있다.

AI 데이터 센터의 평균 에너지 소비량을 찾아보고, 평균 가정집 에너지 소비량과 비교해보자.

2024년 전 세계 데이터 센터의 전기 사용량은 415TWh로 전 세계 전력 소비량의 1.5%를 차지하고 있다. 현재 서울시의 가정집은 평균 1년에 3,420KWh를 사용한다. 이는 서울시 가정 사용량의 1.2억배에 달하는 양이다. 서울은 큰 도시이기에 다른 도시보다 전기 사용량이 더 많다는 것을 감안하면 다른 도시와 비교하면 더 큰 차이가 날 수 있다.

AI 시대에 폭발적으로 증가하는 에너지 수요를 어떤 방식으로 해결해야 할까? 단순히 발전원을 늘리는 것이 해결 방법이 될 수 있을까?

현재로써는 대규모로 안전하게 전력을 저장하는 기술을 개발 중이기 때문에, 수요를 잘못 계산한다면 큰 돈을 날리고 생태계를 파괴할 수 있다. 그러니 리스크가 적은 에너지원을 위해 신재생 에너지를 사용하고, 주로 에너지를 사용하는 시간대를 피해서 AI를 사용하도록 하며, 발전소에서 가까운 곳에 데이터 센터를 세운다면 에너지 부족의 문제를 조금이라도 해결할 수 있다.