Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 티스토리챌린지
- 머신러닝
- kt 에이블스쿨 6기 빅프로젝트
- 케이티 에이블스쿨 6기 후기
- kt 에이블스쿨 6기 미니 프로젝트
- kt 에이블스쿨 기자단
- SQLD
- 네트워크
- 프로그래머스
- 케이티 에이블스쿨 6기
- 케이티 에이블스쿨 6기 java
- 케이티 에이블스쿨
- 구현
- 케이티 에이블스쿨 6기 spring
- kt aivle school
- 데이터 프레임
- 파이썬
- 판다스
- 케이티 에이블스쿨 기자단
- KT AIVLE
- KT 에이블스쿨
- 에이블 기자단
- kt 에이블스쿨 6기
- 오블완
- kt 에이블스쿨 6기 ai
- 알고리즘
- 백준
- 앙상블
- 케이티 에이블스쿨 6기 ai
- 백준 사탕 게임
Archives
- Today
- Total
미식가의 개발 일기
[KT 에이블스쿨(6기, AI)] 6주차, 딥러닝(회귀 모델링, 분류 모델링) 본문
<6주차 후기>
- 딥러링의 기본 구조와 작동하는 전체 프로세스에 대해 배웠어요!
- 딥러닝과 머신러닝의 구조는 기본적으로 비슷하지만, 딥러닝에서는 신경망의 여러 층을 사용하여 더 복잡한 모델을 구축합니다.
- 머신러닝은 사용자가 수동으로 특징을 추출하고 도메인 지식을 활용하여 분석해야 했지만 딥러닝은 신경망이 자동으로 특징 추출 후 학습하는 형태입니다.
- 회귀, 이진 분류, 다중 분류에 대해 스케일링, 활성화 함수, 손실 함수 설정을 달리 해줘야 했는데 이 부분이 가장 주의해야 하는 부분이라고 말씀해주셨어요!
- 다음주에는 성능 관리와 시계열 데이터 모델링에 대해 배우는데 이번 실습에서 과적합으로 학습 곡선이 이상하게 나왔던 부분을 개선할 수 있는 방법에 대해 배울 것 같습니다.
- 딥러닝이라는 이름만 들었을 때는 엄청 어려울 것 같고 진입 장벽이 있었는데 강사님께서 어려운 부분은 반복 설명 해주시고 그때그때 강의 피드백을 받아 진행해 주셔서 따라가는데 어려움은 없었던 거 같습니다! 이번 주말에 잘 복습해서 다음주에 딥러닝 과정 마무리하고 다시 후기 들고 오겠습니다. 😊
딥러닝이란?
인간의 뇌를 모방한 인공 신경망을 사용하여 데이터를 학습하고 패턴을 인식하는 기술
구조
- 신경망(Neural Networks)
- 입력(외부에서 받는 특징), 은닉(특징 추출, 패턴 학습), 출력(최종 예측값) 계층으로 구성
- 인간의 뇌 신경 구조를 본떠 만든 모델
- 각 계층은 여러 개의 뉴런(Neuron)으로 이루어짐
- 각 뉴런은 가중치(Weights)를 가지고 있으며 이를 조정하여 학습
스케일링
딥러닝은 스케일링 필수!!
종류 | 스케일링 |
회귀 | 정규화, 표준화 |
이진 분류 | |
다중 분류 | 정수 인코딩, 원-핫 인코딩 |
- 정수 인코딩: target class들을 0부터 시작해 순차 증가하는 정수로 인코딩
from sklearn.preprocessing import LabelEncoder
int_encoder = LabelEncoder()
y_l = int_encoder.fit_transform(data['target']
→ `int_encoder.classes_`: 인코딩 범주 조회
- 원-핫 인코딩: 이진 벡터 변환(하나의 1과 나머지 0으로 이루어진 고유한 벡터)
from sklearn.preprocessing import OneHotEncoder
oh_encoder = OneHotEncoder()
y_oh = oh_encoder.fit_transform(data[['target']]) # input 2차원
from keras.utils import to_categorical
y_c = to_categorical(y.values, 3)
→ `data['target_encoded'].toarray()`: 변환된 데이터 확인
학습 절차
model.fit을 했을 때
- 가중치에 초기값 할당(초기값은 랜덤)
- 초기 모델로 예측
- 오차(실제값-예측값) 계산: `loss function`
- 오차를 줄이는 방향으로 가중치 조정: `optimizer`
- 반복(오차의 변동이 거의 없거나 `max_iteration`에 도달할 때까지)
모델링
모델 선언
nfeatures = x_train.shape[1] # 컬럼의 개수
# 메모리 정리
clear_session()
# Sequential 타입
model = Sequential( [Input(shape =(nfeatures,)),
Dense(8, activation = 'relu'),
Dense(4, activation = 'relu'),
Dense(1)])
# 모델요약
model.summary()
- Input(입력층): `Input(shape = ( , ))`
- 1차원: (feature 수, )
- 2차원: (rows, columns)
- Hidden Layer(은닉층): `Dense(뉴런의 개수, activation = 'relu')` → 활성화 함수 필요
- `relu`: 일반적으로 사용하는 활성화 함수
- Output(출력층): `Dense(target의 수)`
종류 | Dense |
회귀 | `Dense(1)` |
이진 분류 | `Dense(1, activation='sigmoid')` |
다중 분류 | `Dense(class 개수, activation='softmax')` |
모델 설정
model.compile(optimizer=Adam(learning_rate=0.1), loss='mse', metrics=[])
- `Adam`: 가장 성능이 좋은 optimizer(오차를 줄이는 방향으로 가중치 업데이트)
- `learing rate`: 기울기에 곱해지는 조정 비율, 보폭 조절
- `loss`(loss function)
종류 | loss |
회귀 | mse |
이진 분류 | binary_crossentropy |
다중 분류 | sparse_categorical_crossentropy(정수 인코딩) categorical_crossentropy(원-핫 인코딩) |
- `metrics`: 성능 평가 기준 설정 → 회귀: mean_absolute_error , 분류: accuracy 등
모델 학습
history: 가중치 업데이트시 오차를 기록
history = model.fit(x_train, y_train, epochs=20, validation_split=0.2).history
- `batch_size`: 적절히 나눠서 반복(기본값: 32)
- `epoch`: 학습 횟수 설정
- `validation_split`: train 데이터에서 20%를 검증셋으로 분리
학습 곡선: 학습 경향을 파악하는데 유용
plt.plot(history['loss'], label='train_err',)
plt.plot(history['val_loss'], label='val_err')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend()
plt.show()
모델 평가
- 머신러닝에서 배웠던 모델 평가 지표를 똑같이 사용
[KT 에이블스쿨(6기, AI)] 4주차, 머신러닝(머신러닝 이해, 성능 평가)
미니프로젝트가 끝난 후 기대하던 머신러닝 수업이 시작됐어요! 😊다음 주까지 총 5일간 진행되는데 이번 주는 머신러닝의 개념과 분류에 대해 학습하고, 모델링을 한 후 성능 평가를 하는 법
irreplaceablehotgirl.tistory.com
※ 이진 분류 모델은 activation이 sigmoid로 0~1사이의 확률값을 가지므로 0.5를 기준으로 잘라서 0, 1로 변환 후 평가
pred = model.predict(x_val)
pred = np.where(pred >= .5, 1, 0)
※ 다중 분류 모델은 각 클래스별 확률값 중 가장 큰 값의 인덱스로 변환
pred = model.predict(x_val)
pred = pred.argmax(axis=1)
반응형
'KT 에이블스쿨(6기, AI)' 카테고리의 다른 글
[KT 에이블스쿨(6기, AI)] 7주차, 3차 미니 프로젝트 (0) | 2024.10.21 |
---|---|
[KT 에이블스쿨(6기, AI)] 7주차, 딥러닝(성능 관리, 모델 저장 및 불러오기, 시계열 모델링) (1) | 2024.10.15 |
[KT 에이블스쿨(6기, AI)] 5주차, 2차 미니 프로젝트 (1) | 2024.10.10 |
[KT 에이블스쿨(6기, AI)] 5주차, 머신러닝(지도학습 알고리즘, K-분할 교차 검증, 하이퍼파라미터 튜닝) (2) | 2024.10.04 |
[KT 에이블스쿨(6기, AI)] 4주차, 머신러닝(머신러닝 이해, 성능 평가) (1) | 2024.09.28 |