3. 신경망
페이지 정보
작성자 관리자 댓글 0건 조회 2,158회 작성일 20-02-22 17:16본문
3. 신경망
#신경망 : 입력층과 은닉층 출력층으로 이루어져 있다.
은닉층(사람 눈에 보이지 않는 층)은 중간층을 말한다.
입력층(0층), 은닉층(1층), 출력층(3층)은 퍼셉트론의 신호전달 방식과 공통점이 있다.
[ 활성화 함수를 이용한 퍼셉트론 식 ]
입력신호의 총합을 출력신호로 변환하는 함수를 "활성화 함수" 라고 한다.
위의 식은 가중치가 있는 입력신호와 편향을 계산하고 이를 a라고 하면 a를 함수 h()에 넣어 y를 출력하는 흐름을 보여준다.
[시그모이드(sigmoid) 함수]
신경망에서 자주 이용하는 활성화 함수 중의 하나이다.
[ 계단 함수 ]
임계값을 경계로 출력이 바뀌는 함수
실습. 계단함수
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pylab as plt
def step_func(x):
return np.array(x>0, dtype=np.int)
x = np.arange(-5.0, 5.0, 0.1)
print(x)
print("---------------------")
y = step_func(x)
print(y)
print("---------------------")
plt.plot(x,y)
plt.ylim(-0.1, 1.1) #y축의 범위를 지정
plt.show()
결과.
실습. 시그모이드 함수
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pylab as plt
def sigmoid(x):
return 1/ (1+np.exp(-x))
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
print(x)
print("---------------------")
print(y)
print("---------------------")
plt.plot(x,y)
plt.ylim(-0.1, 1.1) # y limit 값
plt.show()
결과.
계단함수는 x 값이 0보다 크면 1, 0보다 작으면 0을 타나낸다.
퍼셉트론에서는 계단함수가 활성화 함수가 된다.
뉴런사이에 신호가 흐른다면 1, 않흐른다면 0을 나타낸다.
신경망에서는 시그모이드함수가 활성화 함수가 된다.
# 계단함수와 시그모이드 함수의 공통점
** 비선형 함수 : 직선하나로는 그릴수 없는 함수
따라서, 신경망에서는 활성화함수로 비선형함수를 사용해야 한다.
h(x)는 활성화 함수이다. 여러층의 은닉층이 있을 때 아래와 같이 확장된다.
은닉층은 다시 아래와 같이 요약할 수 있으므로 여러층의 은닉층도 아래 와 같이 표현된다.
[ ReLU 함수 ]
- Rectified Linear Unit 함수 : 입력이 0을 넘으면 그 입력을 그대로 출력하고 0이하이면 0을 출력하는 함수이다.
[ 파이썬으로 ReLU 함수 구현 ]
def relu(x):
return np.maximum(0, x) # maximum 두 입력중에 큰값을 반환하는 함수
실습.
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pylab as plt
def relu(x):
return np.maximum(0, x) # maximum 두 입력중에 큰값을 반환하는 함수
print(relu(2))
print(relu(-4))
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
A = np.array([1,2,3,4])
print(A)
print("---------------------")
print(A.shape) # 변수의 형태를 튜플로 보여줌
print(np.ndim(A)) # n차원
print("---------------------")
B = np.array([[1,2],[3,4],[5,6]])
print(B)
print("---------------------")
print(B.shape) # 변수의 형태를 튜플로 보여줌
print(np.ndim(B)) # n차원
결과.
댓글목록
등록된 댓글이 없습니다.