머신러닝

본문 바로가기
사이트 내 전체검색


머신러닝
머신러닝

3. 신경망

페이지 정보

작성자 관리자 댓글 0건 조회 2,158회 작성일 20-02-22 17:16

본문

3. 신경망

#신경망 : 입력층과 은닉층 출력층으로 이루어져 있다.


 은닉층(사람 눈에 보이지 않는 층)은 중간층을 말한다.

입력층(0층), 은닉층(1층), 출력층(3층)은 퍼셉트론의 신호전달 방식과 공통점이 있다.



 

 [ 활성화 함수를 이용한 퍼셉트론 식 ]

 



6.PNG



 입력신호의 총합을 출력신호로 변환하는 함수를 "활성화 함수" 라고 한다.


7.PNG 

 

위의 식은 가중치가 있는 입력신호와 편향을 계산하고 이를 a라고 하면 a를 함수 h()에 넣어 y를 출력하는 흐름을 보여준다.

 
  [시그모이드(sigmoid) 함수] 


  신경망에서 자주 이용하는 활성화 함수 중의 하나이다. 

8.PNG

 

  [ 계단 함수 ]
  

임계값을 경계로 출력이 바뀌는 함수
 


9.PNG



실습. 계단함수


# -*- 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()


 


결과.


10.PNG


11.PNG



실습. 시그모이드 함수


# -*- 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()
 


결과.



12.PNG

13.PNG



계단함수는 x 값이 0보다 크면 1, 0보다 작으면 0을 타나낸다.

14.PNG


퍼셉트론에서는 계단함수가 활성화 함수가 된다.

뉴런사이에 신호가 흐른다면 1, 않흐른다면 0을 나타낸다.

신경망에서는 시그모이드함수가 활성화 함수가 된다.



# 계단함수와 시그모이드 함수의 공통점

 ** 비선형 함수 : 직선하나로는 그릴수 없는 함수

 따라서, 신경망에서는 활성화함수로 비선형함수를 사용해야 한다.
 


16.PNG

h(x)는 활성화 함수이다. 여러층의 은닉층이 있을 때 아래와 같이 확장된다.

17.PNG


18.PNG

은닉층은 다시 아래와 같이 요약할 수 있으므로 여러층의 은닉층도 아래 와 같이 표현된다.

19.PNG

 

 

[ ReLU 함수 ]

 - Rectified Linear Unit 함수 : 입력이 0을 넘으면 그 입력을 그대로 출력하고   0이하이면 0을 출력하는 함수이다.


15.PNG 

 


20.PNG

 

 

[ 파이썬으로 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))
 


결과.



21.PNG



실습.


# -*- 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차원
 


결과.


22.PNG



댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.