AI는 체격을 보고 초,중,고등학생을 구분이 가능한가?
신경망의 구조
- 입력층 1개, 은닝측 1개, 출력층 1개로 구성된 FNN
- 외부에서 들어오는 입력값에 가중치(weight)를 곱한 값을 모두 더하여 하나의 입력값으로 정돈한다.
- 가중치가 큰 입력값은 퍼셉트론에 크게 영향을 미치고, 가중치가 작은 입력값은 퍼셉트론에 작은 영향을 미친다.
- 입력층은 <성별>, <키>, <체중> 3동류의 데이터를 입력받기 위해 크기를 3으로 설정
- 출력층에는 Softmax라는 활성화 함수가 적용 연산을 거치면 확률 질량 함수로서의 의미를 가짐
층수 | 종류 | 크기 | 활성화 함수 |
---|
1층 | FNN | 3 | 없음 |
2층 | FNN | 128 | ReLu |
3층 | FNN | 3 | Softmax |
딥러닝 모델 코딩
"""
Author : Byunghyun Ban
Date : 2020.07.24.
"""
from tensorflow import keras
import data_reader
EPOCHS = 20
dr = data_reader.DataReader()
model = keras.Sequential([
keras.layers.Dense(3),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dense(3, activation='softmax')
])
model.compile(optimizer="adam", metrics=["accuracy"],
loss="sparse_categorical_crossentropy")
print("************ TRAINING START ************")
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
validation_data=(dr.test_X, dr.test_Y),
callbacks=[early_stop])
data_reader.draw_graph(history)
AI는 꽃을 구분할 수 있을까?
신경망의 구조
- 4개의 피처 <꽃받침 길이,너비,꽃잎 길이,넙비>
- 2층 아래에 'Dropout'이라는 값을 대입
층수 | 종류 | 크기 | 활성화 함수 |
---|
1층 | FNN | 4 | 없음 |
2층 | FNN | 128 | ReLu |
- | Dropout | rate=0.5 | - |
3층 | FNN | 3 | Softmax |
드롭아웃
- 신경 일부를 버리는 기법
- 드롭아웃의 크기에 'rate=0.x(0~1)'로 기재하면 대상은 매번 임의로 선택되어 지정된 퍼셉트론은 잠시동안 가중치가 0으로 설정되어 다른 퍼셉트론으로 정보를 전달하지 못한다.
- 오버피팅을 방지하는 효과가 있다.

"""
Author : Byunghyun Ban
Date : 2020.07.24.
"""
from tensorflow import keras
import data_reader
EPOCHS = 20
dr = data_reader.DataReader()
model = keras.Sequential([
keras.layers.Dense(4),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dropout(rate=0.5),
keras.layers.Dense(3, activation='softmax')
])
model.compile(optimizer="adam", metrics=["accuracy"],
loss="sparse_categorical_crossentropy")
print("\n\n************ TRAINING START ************ ")
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS, batch_size=5,
validation_data=(dr.test_X, dr.test_Y),
callbacks=[early_stop])
data_reader.draw_graph(history)
앙상블(ensemble) 학습
- 문제를 해결하기 위해 여러 개의 모델을 학습시키는 것을 의미한다.
- 동일한 알고리즘 모델을 여러 개 학습시키는 방법도 있고, 여러 종류의 알고리즘을 각각 학습시키는 방법도 있다.
- 다수결의 원칙에 따라 AI의 의견을 투표로 취합하는 보팅(voting)기법이 가장 쉬운 방법이다.