보초의 코딩일기장

데이터 청년 캠퍼스 17일차 본문

데이터청년캠퍼스

데이터 청년 캠퍼스 17일차

장보비 2019. 7. 23. 14:08

2019.07.23

perceptron

  • 신경망의 목적은 내 답을 잘 찾아주는 Weight을 구하는 것임. 그리고 편향을 넣어서 학습이 되게끔 만드는 것
    ==> Y = W*X+b

  • 어떤 입력 노드가 출력 노드의 오차에 기여했다면 두 노드의 연결 가중치는 해당 입력 노드의 출력과 입력노드의 오차에 비례하여 조절한다. (가장 많이 틀린 값부터 수정하는 것임)

  • 그런데, 퍼셉트론은 XOR을 선형으로 분류가 불가능. 그래서 비선형으로 문제를 해결해야 한다.

  • Delta Rule 학습과정

  1. 신경망의 가중치를 적당한 값으로 초기화
  2. 입력 데이터를 넣고 신경망의 출력값을 얻고 출력값과 실제 값의 오차를 계산
  3. 델타 규칙에 따라 가중치 갱신값을 계산
  4. 신경망의 가중치를 조절
  5. 전체 학습 데이터에 대해 2~4 단계를 반복
  6. 신경망의 오차가 줄어들 때 까지 2~5단계 반복

배열의 차원 수 확인 np.ndim()
배열의 형상 확인 shape()

Sigmoid 와 step function 차이:

  1. 매끄러움
  • 계단 함수 : 0을 기점으로 출력이 급격하게 변화 ->학습이 잘 안됨
  • 시그모이드 함수 : 입력에 따라 연속적 변화
1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
import matplotlib.pyplot as plt
 
def step_function(x):
  return np.array(x>0,dtype=np.int)
 
X=np.arange(-5.0,5.0,0.1)
Y=step_function(X)
 
plt.plot(X,Y)
plt.ylim(-0.1,1.1)
plt.show()
cs
1
2
3
4
5
6
7
8
9
10
def sigmoid(x):
  return 1/(1+np.exp(-x))
 
X=np.arange(-5.0 , 5.00.1)
Y=sigmoid(X)
 
plt.figure(figsize=(15,10))
plt.plot(X,Y)
plt.ylim(-0.1,1.1)
plt.show()
cs

1
2
3
4
5
6
7
8
9
10
def relu(x):
  return np.maximum(0,x)
 
X=np.arange(-5.0 , 5.00.1)
Y=relu(X)
 
plt.figure(figsize=(15,10))
plt.plot(X,Y)
plt.ylim(-0.1,5)
plt.show()
cs

Buy me a coffeeBuy me a coffee
Comments