일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝 역사
- 분류 머신러닝 모델
- 데이터 전 처리
- 데이터 분리
- 머신러닝 과정
- 알고리즘 기술
- 퍼셉트론
- 가중치 업데이트
- 결측값 처리
- MSEE
- 평가용 데이터
- 경사하강법
- 스케이링
- 지도학습
- 회귀 알고리즘 평가
- 더미 기법
- 수치형 자료
- 학습용데이터
- 웹 크롤링
- 지니 불순도
- 항공지연
- 다중선형 회귀
- LinearRegression 모델
- 명목형
- 지도학습 분류
- ICDL 파이썬
- 뉴런 신경망
- 이상치 처리
- 불순도
- 수치 맵핑 기법
- Today
- Total
끄적이는 기록일지
[딥러닝] 01.퍼셉트론_(2)퍼셉트론 본문
지난 시간엔 딥러닝이 무엇이고 실생활에 어떻게 활용되고 있는지에 대해 알아보았습니다.
이번에는 가장 작은 정보처리 단위인 퍼셉트론에 대해 알아보겠습니다.
1. 신경망 이전의 연구
신경망 이전에는 사람이 직접 패턴을 파악하여 컴퓨터에게 예측하도록 하여 사용했습니다.
2. 초기 형태의 신경망, 퍼셉트론
- 인간의 신경세포와 비슷한 구조를 가진 퍼셉트론은
처음에 n개의 신호를 받아와 정보를 전달에 출력하는 형태를 가지고 있다.
3. 퍼셉트론의 기본구조
y = activation(w0 + w1*x1 + w2*x2)
- x1, x2를 입력받아 가중치인 w1, w2를 각각 곱하여 w0와 이를 더해준 뒤 활성화함수로 1인지 0인지 판단한 값을 y로 출력되게 된다.(여기서 w0는 바이어스에 해당된다.)
* 가중치 : 들어오는 신호를 얼마나 증폭시킬 것인지(신호를 높이고 싶을 땐 가중치↑)
* 바이어스 입력값에 상관없이 무조건 입력되는 값. 어떤 값이든 무조건 들어감
* 활성화함수 : 결과값이 0보다 크거나 같으면 1, 0보다 작으면(음수면) 0
ex) 입력값이 1, 0이고 가중치가 각각 2, 1일 때 y값은? 바이어스는 -0.5
→ y = activation(-0.5 + 1*2 + 0*1) = activation(1.5) = 1(1.5 ≥ 0)
4. 퍼셉트론 동작 예시
- 강의 학습 여부를 예측하기 위한 데이터
오늘 나온 신작 드라마 수(x1) | 확보한 여가 시간(x2) | 강의 학습 여부(y) |
2 | 4 | 1 |
5 | 4 | 1 |
7 | 1 | 0 |
3 | 0 | 0 |
0 | 2 | 1 |
4 | 1 | 0 |
... | ... | ... |
5. 퍼셉트론을 활용한 선형 분류기
1) 퍼셉트론은 선형 분류기로서 데이터 분류 가능.
2) 하나의 선으로 분류할 수 없는 경우
→ 다층 퍼셉트론
6. 실습
1. perceptron의 예측 결과가 학습한다
: 1 이 나오도록 x1, x2x에 적절한 값을 입력하세요.
(활성화 함수는 ‘신호의 총합이 0 이상이면 학습하고, 0 미만이라면 학습하지 않는다‘는 규칙을 가진다.)
# 학습 여부를 예측하는 퍼셉트론 함수
"""
w0 : 다른 영향을 받지 않고 학습을 해야 한다는 의지
x1 : 오늘 나온 신작 드라마 수
w1 : 드라마 시청 욕구로 인한 영향
x2 : 확보한 여가 시간
w2 : 여가 시간에 공부하고 싶은 정도
y : 엘리스 학습 여부(학습한다:1, 학습하지 않는다:0)
"""
def Perceptron(x_1,x_2):
# 설정한 가중치값을 적용
w_0 = -5 # 다른 영향을 받지 않고 학습을 해야 한다는 의지
w_1 = -1 # 드라마 시청 욕구로 인한 영향
w_2 = 5 # 여가 시간에 공부하고 싶은 정도
# 활성화 함수에 들어갈 값을 계산
output = w_0+w_1*x_1+w_2*x_2
# 활성화 함수 결과를 계산
if output < 0:
y = 0
else:
y = 1
return y, output
"""
1. perceptron의 예측 결과가 학습한다:1 이 나오도록
x_1, x_2에 적절한 값을 입력하세요.
"""
x_1 = 0
x_2 = 2
result, go_out = Perceptron(x_1,x_2)
print("신호의 총합 : %d" % go_out)
if go_out > 0:
print("학습 여부 : %d\n==> 학습한다!" % result)
else:
print("학습 여부 : %d\n==> 학습하지 않는다!" % result)
>>> 신호의 총합 : 5
학습 여부 : 1
==> 학습한다!
DIY 퍼셉트론 만들기
1. 신호의 총합(output)과 그에 따른 결과 0 또는 1을
반환하는 함수 perceptron을 완성합니다.
Step01. 입력 받은 값을 이용하여
신호의 총합을 구합니다.
Step02. 신호의 총합(output)이 0 이상이면 1을,
그렇지 않으면 0인 y를 반환하는 활성화
함수를 작성해 perceptron함수를 완성
def perceptron(w, x):
output = w[0] + w[1]*x[0] + w[2]*x[1] + w[3]*x[2] + w[4]*x[3]
if output >= 0:
y = 1
else:
y=0
return y, output
# x_1, x_2, x_3, x_4의 값을 순서대로 list 형태로 저장
x = [1,2,3,4]
# w_0, w_1, w_2, w_3, w_4의 값을 순서대로 list 형태로 저장
w = [2, -1, 1, 3, -2]
# 퍼셉트론의 결과를 출력
y, output = perceptron(w,x)
print('output: ', output)
print('y: ', y)
>>> output: 4
y: 1
- 퍼셉트론의 알맞은 가중치 찾기
1. perceptron 함수의 입력으로 들어갈 가중치 값을 입력해주세요.
w 리스트 안의 값들은 순서대로 w0,w1,w2에 해당됩니다.
(주어진 데이터를 완벽히 분리하는 퍼셉트론을 직접 구현.
적절한 가중치(Weight)와 Bias 값을 찾아봅시다.)
import numpy as np
def perceptron(w, x):
output = w[1] * x[0] + w[2] * x[1] + w[0]
if output >= 0:
y = 1
else:
y = 0
return y
# Input 데이터
X = [[0,0], [0,1], [1,0], [1,1]]
'''
1. perceptron 함수의 입력으로 들어갈 가중치 값을 입력해주세요.
순서대로 w_0, w_1, w_2에 해당됩니다.
'''
# 0보다 작은 값 : 0
w = [-2 , 1, 1]
# AND Gate를 만족하는지 출력하여 확인
print('perceptron 출력')
for x in X:
print('Input: ',x[0], x[1], ', Output: ',perceptron(w, x))
>>> perceptron 출력
Input: 0 0 , Output: 0
Input: 0 1 , Output: 0
Input: 1 0 , Output: 0
Input: 1 1 , Output: 1
'AI실무' 카테고리의 다른 글
[머신러닝] 06.텐서플로와 신경망_(2) 딥러닝 구현 (0) | 2021.10.15 |
---|---|
[머신러닝] 06.텐서플로와 신경망_(1) 딥러닝 모델의 학습 방법 (0) | 2021.10.15 |
[딥러닝] 01.퍼셉트론_(1)딥러닝 (0) | 2021.10.08 |
[머신러닝] 04.지도학습-분류_(3) 분류 평가 지표 (0) | 2021.10.03 |
[머신러닝] 04.지도학습-분류_(2) 의사결정나무-불순도 (1) | 2021.10.03 |