맛동산

계단 함수와 시그모이드 함수 그리고 ReLU, 활성화 함수가 선형 함수면 안되는 이유 본문

파이썬/딥러닝 구현

계단 함수와 시그모이드 함수 그리고 ReLU, 활성화 함수가 선형 함수면 안되는 이유

오지고지리고알파고포켓몬고 2017. 5. 15. 12:51

계단 함수 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
·¬
import·numpy·as·np¬
import·matplotlib.pylab·as·plt¬
¬
#####################################################¬
##·¬
x·=·np.array([-1.0,·1.0,·2.0])¬
print(x)·#·[-1.··1.··2.]¬
¬
y·=·x>0¬
print(y)·#·[False··True··True]¬
¬
z·=·np.array(x>0,·dtype=np.int)¬
print(z)·#·[0·1·1]¬
¬
def·step_function(x):¬
····return·np.array(x>0,·dtype=np.int)¬
¬
x2·=·np.arange(-5.0,·5.0,·0.1)·#·71p·¬
y·=·step_function(x2)¬
plt.plot(x2,y)¬
plt.ylim(-0.1,1.1)¬
plt.show()¬
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

 

시그모이드 함수 구현(시그모이드 함수 식 참조)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
·¬
import·numpy·as·np¬
import·matplotlib.pylab·as·plt¬
¬
####################################################¬
##·¬
¬
def·sigmoid(x):¬
····return·1·/·(1·+·np.exp(-x))·#·numpy·¬
¬
x·=·np.array([-1.0,·1.0,·2.0])¬
#print(np.exp(-x))¬
y·=·sigmoid(x)¬
print(y)¬
¬
x·=·np.arange(-10,·10,·0.1)¬
y·=·sigmoid(x)¬
plt.plot(x,y)¬
plt.ylim(-0.1,·1.1)¬
plt.show()¬
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

 

 

ReLU 함수 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
·¬
import·numpy·as·np¬
import·matplotlib.pylab·as·plt¬
¬
####################################################¬
##·ReLU¬
¬
def·relu(x):¬
····return·np.maximum(0,x)¬
¬
#·print(np.maximum(0,x))¬
#·maximum·:·····¬
#·np.maximum(0,1)·->·1¬
#·np.maximum(0,x)·(x·:·-10·...·9.9)·->···maximum(0,·-10)·...·maximum(0,·9.9)¬
¬
x·=·np.arange(-10,·10,·0.1)¬
y·=·relu(x)¬
plt.plot(x,y)¬
plt.ylim(-0.1,·10.1)¬
plt.show()¬
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

 

 

신경망에서는 활성화 함수로 비선형 함수를 사용해야함

선형 함수를 이용하면 신경망의 층을 깊게하는 의미가 없음

 

h(x) = cx를 활성화 함수로 하는 3층 네트워크에서 y(x) = h(h(h(x)))가 되는데, y(x) = c*c*c*x가 되고 y(x) = ax, a = c^3 의 식이 되는겨. 즉 층을 늘린 의미가 없는겨

 

so 층을 쌓는 혜택을 얻고 싶으면 활성화 함수로 비선형 함수를 사용해야함.

 

 

 

수치 예측을 하는 신경망 구조를 만들기 위해서 어떤 활성화 함수를 구현해야하는가?

단순히 활성화 함수를 없애는 것으로 수치 예측 모델이 나올 수 있나?

자연어 처리 모델에 응용 가능성은?

'파이썬 > 딥러닝 구현' 카테고리의 다른 글

재현신경망?  (0) 2017.05.19
신경망의 내적은 행렬의 내적과 같다  (0) 2017.05.19
SyntaxNet 관련 좌표  (0) 2017.05.15
다층 퍼셉트론의 구현(XOR)  (0) 2017.05.14
단순 퍼셉트론  (0) 2017.05.12
Comments