빅데이터 | 머신러닝 | 딥러닝/딥러닝

[딥러닝 기초] 다층 신경망 (MLPClassifier)

냠냠:) 2020. 5. 8. 01:17

[이 글은 "Do it 딥러닝 입문" 책을 보고 공부한 내용을 복습하고자 정리한 글입니다.]

 

배치 경사 하강법

 - 확률적 경사 하강법보다 많은 양을 가지고 손실함수의 최솟값을 찾기 때문에 찾는 과정이 더욱 안정적이다.

 - 대신 가중치를 1번 업데이터할 때사용되는 데이터 개수가 많으므로 계산 비용이 많이든다.

 

점 곱(dot product, 스칼라 곱) : 두 벡터를 곱하여 합을 구하는 계산.

 

다층 신경망

 - 뉴런이 2개 이상 있는 신경망으로 은닉층을 통과한 값들은 다시 출력층으로 모임. 

 - 활성화 함수는 층마다 다를 수 있지만 한 층에서는 같아야 한다.

 - 모든 뉴런이 연결되어 있으면 완전 연결 신경망이라고 한다. (add. 순환 신경망, 합성곱 신경망)

 

Sklearn의 MLP모델 사용하여 구현하기

 

hidden_layer_sizes : 은닉층의 수와 뉴런의 개수를 튜플로 전달.

 

activation : 활성화 함수를 매개변수로 지정. 기본 값은 ReLU이다.

 

solver : 경사 하강법 알고리즘 종류를 지정 -> SGD는 확률적 경사 하강법

 

alpha : L2규제의 규제의 양 기본값은 0.0001

 

 

sklearn_NN_train2020.05.08
In [1]:
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
cancer = load_breast_cancer()   #유방암 환자 데이터
x = cancer.data
y = cancer.target

x_train_all, x_test, y_train_all, y_test = train_test_split(x,y, stratify=y, test_size = 0.2, random_state=42)
x_train, x_val, y_train, y_val = train_test_split(x_train_all, y_train_all, stratify=y_train_all, test_size=0.2, random_state=42)

scaler = StandardScaler()   #데이터 전처리
scaler.fit(x_train)
x_train_scaled = scaler.transform(x_train)
x_val_scaled = scaler.transform(x_val)
In [2]:
from sklearn.neural_network import MLPClassifier
mlp = MLPClassifier(hidden_layer_sizes=(10,), activation='logistic',solver='sgd',alpha=0.01, batch_size=32,
                   learning_rate_init=0.1, max_iter=1000)
In [3]:
mlp.fit(x_train_scaled,y_train)
mlp.score(x_val_scaled,y_val)
Out[3]:
0.989010989010989

https://github.com/chlgkrws/DeepLearningOfDoIt/blob/master/DeepLearning%20of%20DoIT/Mini_batch_2020_5_7.ipynb <- 직접 구현한 부분 보기

반응형