딥러닝
- 인공신경망(ANN; Artificial Neural Networks) 기법의 은닉층을 깊게 쌓는 구조를 이용해 학습하는 기법
- 장점
- 데이터의 특징을 단계별로 추상화를 높여가면서 학습
- 얕은 은닉층은 점, 선, 면과 같은 추상화 단계가 낮은 특징을 학습
- 깊은 은닉층은 얼굴의 눈, 코 입 등 추상화 단계가 높은 특징을 학습
CNN; Convolution Neural Network
- 시각세포의 작동 원리를 본떠서 만들고 이미지를 특정한 영역별로 추출하여 학습시킴
- 비전에서 주로 filter 연산을 뜻하며 이미지 특징을 찾기 위해 filtering을 수행
- 이미지, 영상 분류와 인식에 유용
RNN; Recurrent Neural Networks
- 순차적인 정보를 처리하는데 사용되는 알고리즘으로 다양한 자연어처리 문제에 대해 뛰어난 성능을 보이고 있는 인기있는 모델
- 전후 관계에 대한 패턴을 학습하는 알고리즘
자동완성 기능, 음성인식기능, 번역기능, 챗봇, 자막, 작곡, 기사작성, 소설 등
Numpy
- 리스트보다 데이터의 저장 및 처리가 효율적
- n dimension array(n차원 배열) - ndarray 타입 제공
- 선형대수와 관련된 기능 제공 (행렬 연산)
- 대규모 다차원 배열을 쉽게 처리하는 기능 지원
- 데이터 과학 도구의 핵심 패키지
- pandas
- scipy
- scikit-learn 등
Numpy 배열 객체 기능
- 단일 요소에 접근하는 인덱싱
- 하위배열에 접근하는 슬라이싱
- Bool 배열을 이용한 마스킹 연산
- 인덱스 배열을 이용한 팬시 인덱싱
- 모든 기능을 결합한 복합 인덱스 기능 제공
Array(tensor)의 데이터 표현
- 0D 텐서: 스칼라(Scalar)
- 모양: 점
- 차원: 0
- 설명: 방향도 없고 크기만 있는 숫자 하나
- Shape: ()
- 1D 텐서: 벡터(Vector)
- 모양: 선
- 차원: 1
- 설명: 리스트
- Shape: (3,) 또는 (10,)
- 2D 텐서: 행렬(Matrix)
- 모양: 면
- 차원: 2
- 설명: 표
- Shape: (samples, features)
- 3D 텐서: 입체(Cube)
- 모양: 큐브
- 차원: 3
- 설명: 행렬이 여러장 겹쳐 있는 것
- Shape: (samples, timesteps, features)
- 4D 텐서 - 5D 텐서
- 4D: 이미지 여러장을 한번에 묶을 때
(배치 크기, 높이, 너비, 채널) -> 딥러닝 모델에 이미지를 넣을 떄 자주 보임 - 5D:동영상 데이터
(배치, 시간, 높이, 너비, 채널)
- 4D: 이미지 여러장을 한번에 묶을 때
Tensorflow
딥러닝 모델 설계 방법
딥러닝 모델 구현 과정
- X, y 데이터셋 준비
- Deep Learning Model 정의
- 모델 컴파일 모델 학습
- 평가
필요한 모듈 불러오기
# tensorflow lib 안에 있는 keras API에서 필요한 함수 불러오기
from tensorflow.keras.models import Sequential
from tensorflow.kears.layers import Dense
# 데이터를 다루는 데 필요한 라이브러리 불러오기
import numpy as np
# 깃허브에 준비된 데이터 가져오기
git clone <git ssh 주소> (이미 파일이 존재하면 뒤에 . 붙여서 불러오기)
데이터 준비 / 모델 정의 / 모델 컴파일 / 실행
# 데이터 불러오기
data_path = 'path'
df = pd.read_csv(data_path)
df.info()
df.describe()
df.head()
# X, y값 정의
X = df.loc[:, 'pregnant':'age']
y = df['diabetes']
모델 구조 설계
- 입력데이터(features): 8개
- 출력(target): 2진분류 (1개 노드)
# lib import
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Input
# 모델 구조 만들기
model = Sequential()
# input부터 레이어 순서대로 입력
# shape: 데이터의 갯수를 tuple로 넣기
# 은닉층 노드의 경우에는 테스트를 하면서 최적의 값을 찾아야하지만 대체적으로 2의 제곱으로 줄여나가는 방법이 일반적
model.add(Input(shape=(8,)))
model.add(Dense(12, activation = 'relu', name = 'Dense_1'))
model.add(Dense(8, activation = 'relu', name = 'Dense_2'))
model.add(Dense(1
학습 방식 정의
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
학습 진행
history = model.fit(
X, y, # <- 학습데이터
epochs=100, # <- 전체 데이터 학습 횟수
batch_size=5, # <= 한번 학습할 때마다 5개 데이터셋을 학습함. 1 iteration
verbose='auto'
)
'삼정KPMG Future Academy > 머신러닝&딥러닝' 카테고리의 다른 글
| CNN (0) | 2025.12.05 |
|---|---|
| 다중분류 문제 해결, CNN (-ing) (0) | 2025.12.04 |
| 비지도학습 K-Means (0) | 2025.12.02 |
| Logistic Regression, Confusion Matrix, Decision Tree (0) | 2025.11.27 |
| 데이터분석과 머신러닝 기본 (0) | 2025.11.25 |