* 이 포스팅은 로드북 출판사의 백견불여일타 딥러닝 입문 with 텐서플로우 2.X 책을 바탕으로 제작되었습니다.
* 필자가 학습해서 얻었던 지식과 느낀 점 위주로 작성한 내용이고, 혹시 틀린 점이 있다면 댓글로 피드백 주시면 감사하겠습니다.
* 포스팅에 대한 문제가 있다면 댓글 남겨주시면 감사하겠습니다.
지난 시간에는 기본 연산 해보는 부분에 대해 학습을 해보았습니다. 이번 시간에는 신경망(퍼셉트론)에 대해 학습하는 시간을 가지도록 하겠습니다.
신경망
*퍼셉트론(Perceptron)
- 신경망은 퍼셉트론 알고리즘에서 시작
- 퍼셉트론 알고리즘은 여러 개의 신호를 입력으로 받아 하나의 신호로 출력
퍼셉트론
- x1, x2 : 입력 / y : 출력 / w1, w2 : 가중치
- x는 데이터의 특성, y는 정답
- 퍼셉트론은 x와 가중치 w를 곱한 값을 모두 더하여 하나의 값(y)으로 만들어 낸다.
- 임계값(threshold)과 비교하여 크면 1, 그렇지 않으면 0으로 출력한다.
-> 이렇게 신경망에서 만들어진 값을 적절한 출력 값으로 변환해주는 함수를 활성화 함수(Activation function)이라고 한다.
퍼셉트론과 퍼셉트론의 기본 단위
- 수식
(w1x1 + w2x2 > threshold) 이면 y = 1, (w1x1 + w2x2 <= threshold) 이면 y = 0
- 계단 함수(step function) : 단순히 0과 1을 출력하는 함수
- 최종 결괏값은 사용자가 정해놓은 답과 비교하는데, 이때, 알고리즘을 사용하여 최적 값을 찾을 때까지 가중치를 업데이트하면서 학습 반복
- 예제 : OR 게이트 문제 해결해보기.
OR 게이트 구현
- tf.random.set_seed( ) : 시드를 고정하여 랜덤으로 생성되는 모든 숫자에서 동일한 결과를 얻을 수 있다.
- 랜덤 시드(Random Seed)는 실험에서 재생산성을 위한 중요한 설정 중 하나이다.
- Dense 층 : 퍼셉트론을 자동으로 생성해준다.
- 밀집층(Dense layer), 다층 퍼셉트론(MLP), 완전 연결층(fully-connected layer) 등 여러 가지 표현이 존재한다.
- Dense(1, input_shape = (2, ) ) : 두 개의 특성을 가지는 1차원의 데이터를 입력받고, 한 개의 출력을 가지는 Dense층이라고 표현, '1' : 퍼셉트론의 개수 또는 은닉 유닛(hidden unit)이라고 표현
- 모델로부터 두 개의 가중치를 얻기
- OR 게이트는 데이터당 두 개의 특성(x1, x2)이 있다.
- 현재 모델이 가지고 있는 가중치 확인해보기
- 3개의 값을 반환( 2개의 가중치와 1개의 편향(bias) )
- 편향 : 직선 함수에서 y 절편과 유사
이번 시간엔 OR 게이트 문제 해결을 위한 퍼셉트론 구현을 통해 퍼셉트론을 학습해보았습니다. 아직까지 배워야 할 내용이 많은 것 같습니다. 다음 시간에는 다층 퍼셉트론에 대해 학습해보겠습니다.
Tool : colab.research.google.com/notebooks/intro.ipynb
'Machine Learning' 카테고리의 다른 글
[딥러닝] 딥러닝이란? 2 (0) | 2021.09.01 |
---|---|
[딥러닝] 딥러닝이란? 1 (0) | 2021.09.01 |
[백견불여일타 딥러닝 입문 : 학습 4일차] (0) | 2021.01.30 |
[백견불여일타 딥러닝 입문 : 학습 3일차] (0) | 2021.01.30 |
[백견불여일타 딥러닝 입문 : 학습 2일차] (0) | 2021.01.30 |