꿈이 너무 많은 한 대학생의 공간

7. 퍼셉트론 텐서플로우로 구현하기 본문

인공지능/딥러닝 이론 및 파이썬 실습

7. 퍼셉트론 텐서플로우로 구현하기

청울울청 2020. 7. 8. 21:07

1. 퍼셉트론 정리

지금까지 우리는 싱글 인풋 뉴런, 멀티 인풋 뉴런, 멀티 레이어 뉴런, 선형과 비선형의 차이 등을 배웠습니다. 앞으로의 강의에서 수월하게 설명하기 위해 개념을 다시 짚겠습니다.

 

사람의 뇌는 뉴런으로 이루어져 있습니다. 뉴런은 하나의 입력값을 받고 연산을 처리한 뒤 다른 뉴런으로 전달하고, 이 과정이 반복되면 인간은 학습을 하게 됩니다. 머신러닝 또한 마찬가지입니다. 뉴런(또는 퍼셉트론, 뉴런이라 하기도 하지만 퍼셉트론이라는 단어를 더 많이 사용하는 것 같습니다. 강의에 따라 뉴런이라 부를 수도 있고, 퍼셉트론이라고 부를 수도 있습니다.)이 서로 연결되어 연산을 처리하고 최종 출력값이 나오는 것처럼 이 과정을 통해 인공지능 모델이 만들어지게 됩니다.

 

위 사진은 멀티 레이어 퍼셉트론(MLP)의 일종입니다. 두 가지의 x값을 받고, 여러 연산 과정을 통해 a가 나오게 되는 형태입니다. 우리는 이때까지 이론만 숙지하며 배워왔습니다. 본 강의에서부터는 직접 구현하며 개념을 이해할 겁니다.

하나의 퍼셉트론을 자세하게 살펴본다면 위와 같습니다. x값에 가중치값을 곱하고, 편향을 더한 총 합을 활성 함수에 넣어 출력값 y가 나오게 되는 것입니다.

 

2. 구현 준비

퍼셉트론에서 사용되는 활성 함수는 많습니다. 오늘 퍼셉트론 구현에서 사용할 활성 함수는 스텝 함수(첫번째 함수)이니 간략하게 설명하겠습니다. 스텝 함수(또는 계단 함수)는 일차함수로 나타내었을 때 실제로 계단 모양과 유사합니다. 사진에는 0일때 0.5를 반환한다고 되어 있지만, 제가 배웠기로는 계단 함수는 0이거나 0보다 클 때 1을 반환한다고 배웠습니다. 조금 엇갈리는 개념이네요. 계단 함수는 들어온 인자값이 0보다 작으면 0을 반환하고, 0이거나 0보다 크다면 1을 반환합니다. 쉬운 개념입니다.

 

지금 사용되는 이미지 처리, 자연어 처리 등에서 쓰이는 딥러닝 모델은 다양한 활성 함수를 사용하지만 딥러닝 이전에는 주로 계단 함수만으로도 충분히 퍼셉트론 구현이 가능했다고 합니다. 

 

3. 퍼셉트론 구현하기

 

지금부터는 주피터 노트북을 통해 구현을 진행하겠습니다. 강의 내에서는 주피터 노트북을 사용하는 방법에 대해서 자세히 나오지 않으니, 다른 매체를 통해서 주피터 노트북을 사용하는 법을 숙지해주세요.

가장 먼저, tensorflow를 임포트 한 후 T 변수를 1.0, F 변수를 0.0, 편향을 1.0으로 설정하겠습니다.

AND, OR, XOR 예시 데이터를 편하게 가져오기 위해 함수로 구현했습니다. 

그 후 저는 AND 데이터를 먼저 실험할 것이기 때문에 get_AND_data 함수를 통해 X, Y 값을 가져오겠습니다.

그 후, 가중치를 설정하기 위해 3개의 난수를 선언합니다. tf.random.normal([a, b]) 라면 하나의 인덱스에 b개의 값을 가진 3개의 배열을 리턴합니다.

그 후, 활성화 함수로 사용할 계단 함수를 구현합니다. tf.greater(a, b) 는 a가 b보다 크거나 같을 때 True를 반환하고 아니면 False를 반환합니다. tf.to_float()는 인자로 받은 값을 실수화합니다. 즉, True를 실수화하거나(1.0) False를 실수화합니다(0.0).

 

Comments