[스마트인재개발원] 딥러닝(Deep Learning) 과정, AND논리 실습
딥러닝 과정
1. 요구사항 분석 / 데이터 수집 / 전처리
- 학습이 가능한 데이터로 만들어주는 과정(결측치, 이상치 제거, 특성공학, 시각화 등)
2. 신경망 설계
- 신경망을 설계 및 컴파일 하는 과정
Sequential(), Dense(), Activation(), compile()
- Sequential() : 신경망을 한층 한층 쌓는 기능
- add() : 신경망 층을 추가
- Dense() : 실제 신경망 층을 설정하는 기능
- Activation() : 활성화 함수를 설정하는 기능
* 활성화 함수 : 출력으로 나오게 하는 기준값(sigmoid, tanh, relu, softmax 등)
3. 딥러닝 학습
- 딥러닝으로 학습하는 과정
fit()
4. 예측
- 평가와 예측을 하는 과정
evaluate(), predict()
AND 논리 구현 실습
데이터 설정
X = [[0,0],[0,1],[1,0],[1,1]] # 특성데이터
y = [0,0,0,1] # 라벨데이터
딥러닝 모델 설정
# 신경망을 생성하는 함수
from tensorflow.keras.models import Sequential
# 퍼셉트론을 정의하는 함수
from tensorflow.keras.layers import Dense,Activation
model = Sequential()
model.add(Dense(units = 1, input_dim = 2))
model.add(Activation("sigmoid"))
model.summary()
Sequential() = 새로운 신경망 생성
* 신경망에 퍼셉트론 추가
- add() : 정의된 퍼셉트론을 신경망에 추가
- units : 출력 수(라벨 (y)의 수)
- input_dim : 입력 수 (특성(x)의 수) - 1차원으로 구성된 특성(특성의 수만을 설정할 때)
.summary() = 생성한 신경망의 구조를 확인
설계한 모델 컴파일 & 학습
model.compile(loss = "binary_crossentropy",
optimizer = "adam",
metrics = ["accuracy"])
model.fit(X,y,epochs=1000,batch_size=4)
<컴파일>
loss : 손실함수의 종류를 설정
1. 회귀분석 : mse(mean_squared Error)
2. 이진분류 : binary_crossentropy
3. 다진분류 : categorical_crossentropy
optimizer : 경사하강법 종류를 설정
- rmsprop, adam(많이 씀->잘나옴)
metrics : 평가방법을 설정
- 회귀분석 : metrics 파라미터 생략 -> 자동으로 오차로 평가
- 분류분석 : acc나 accuracy를 설정 -> 정확도로 평가
<학습>
fit(특성데이터, 라벨데이터, epochs=학습반복수, batch_size = 학습에 사용할 데이터 수)
- compile하지 않고 다시 fit을 수행하면 w, b는 이전에 학습한 결과값을 그대로 사용한다.
즉, 첫 번째 실행에서 1000번을 이미 돌렸다면, 그 이후의 값은 앞의 1000번에 이어서 학습함
평가
model.evaluate(X,y)
evaluate(특성데이터, 라벨데이터) : 반환값으로 오차와 정확도를 반환
예측
pred = model.predict(X)
pred
활성화함수로 sigmoid를 사용했기 때문에 확률값으로 출력
0.5이상이면 1, 이하이면 0으로 판단
스마트인재개발원
4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관
www.smhrd.or.kr