[IBM AI course #2] Introduction to Deep Learning & Neural Networks with Keras
딥러닝 모델을 구축하기 위해 다양한 라이브러리와 프레임워크가 존재하며,
해당 과정에서는 TensorFlow, PyTorch, Keras를 중점적으로 다루게 될 것이다.
주요 딥러닝 라이브러리
1. TensorFlow
가장 인기 있는 라이브러리
Google에서 개발, 2015년 공개
연구 및 실제 제품 환경 모두에서 사용
GitHub 상의 커밋, PR, 포크 수 등 커뮤니티 규모 매우 큼
학습 곡선이 가파름
2. PyTorch
Torch 프레임워크(Lua 기반)에서 파생
GPU 연산에 최적화
Python에 맞춰 재작성되어 사용성이 높고 빠름
2016년 출시, 특히 학계 및 커스텀 모델 최적화에 강점
Meta(Facebook)에서 지원
TensorFlow와 마찬가지로 학습 곡선이 가파름
3. Keras
고수준 API → 코드 간결하고 사용 쉬움
복잡한 네트워크도 몇 줄의 코드로 구현 가능
TensorFlow 위에서 동작하는 방식 (백엔드)
빠른 프로토타이핑에 적합
초보자에게 가장 적합한 라이브러리
선택 가이드
목적 | 추천 라이브러리 |
빠르고 간단한 딥러닝 모델 구현. 입문자 추천 | Keras |
세밀한 조정, 커스텀 네트워크, 학술 연구. 고급 사용자 및 연구자 추천 | PyTorch |
대규모 모델, 산업용 배포. 고급 사용자 및 연구자 추천 | TensorFlow |
Regression Models with Keras
데이터를 올바른 포맷으로 준비하는 방법
Keras를 이용해 간단한 회귀 신경망 모델을 구축하고 훈련하는 방법
[예제] 콘크리트 강도 예측
입력 데이터: 콘크리트 재료의 양 (8개 feature) → Cement, Blast Furnace Slag, Fly Ash, Water, Superplasticizer, Coarse Aggregate, Fine Aggregate, Age
출력 데이터: 콘크리트의 압축 강도 (MPa) → Strength
특징 컬럼은 predictors, 타겟 컬럼은 target으로 분리
모델 구조 (심층 신경망 예시)
입력: 8개의 feature
2개의 은닉층(hidden layer): 각 5개의 노드
출력층: 노드 1개 (압축 강도 예측)
각 레이어는 fully connected (dense) 구조
Keras 코드 구성 요소
모델 정의: Sequential 모델 사용 (선형 구조일 때 적합)
레이어 추가: Dense 레이어 사용 (첫 번째 레이어는 input_shape 지정 필수)
→ 활성화 함수: ReLU (은닉층에 권장)
출력층: 노드 수 1, 활성화 함수 생략 가능
# create model
model = Sequential()
model.add(Input(shape=(n_cols,)))
model.add(Dense(50, activation='relu'))
model.add(Dense(50, activation='relu'))
model.add(Dense(1))
# compile model
model.compile(optimizer='adam', loss='mean_squared_error')
학습 설정
손실 함수 (Loss): 평균 제곱 오차 (mean_squared_error)
최적화 알고리즘 (Optimizer): Adam
ㄴAdam 장점 : 학습률 자동 조정 → 수동 설정 불필요
학습 실행: model.fit()
예측 수행: model.predict()
Classification Models with Keras
[예제] 자동차 구매 결정 예측
입력 데이터 : 가격(price_high, price_medium, price_low), 유지비(maintenance_high, maintenance_medium, maintenance_low), 탑승 가능 인원(persons_2, persons_more)
→ 이미 one-hot 인코딩으로 전처리하여 범주→별도의 열로 변환한 데이터
출력값 데이터: Decision
- 0 = 구매 불가
- 1 = 괜찮은 선택
- 2 = 좋은 선택
- 3 = 매우 좋은 선택
모델 구조
입력: 8개의 feature
2개의 은닉층(hidden layer): 각 5개의 노드
출력층: 노드 4개 (클래스 수만큼)
→ Softmax 활성화 함수 사용. 확률 출력 (합 = 1)
전처리
분류 문제에서는 타겟 라벨을 직접 사용하지 않고, to_categorical()로 변환 필요
즉, [0, 1, 2, 3] 같은 정수형 라벨 → [1, 0, 0, 0], [0, 1, 0, 0] 형태로 변환
Keras 코드 구성 요소
모델 정의: Sequential 모델 사용
Dense 레이어를 add()로 추가
→ ReLU 함수 사용
출력층: Softmax 함수 사용
# create model
model = Sequential()
model.add(Input(shape=(num_pixels,)))
model.add(Dense(num_pixels, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
# compile model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
return model
학습 설정
손실 함수: categorical_crossentropy → 만약 실제 정답 y=[0,1,0], 예측 확률 \hat{y} = [0.1, 0.7, 0.2]이면:
$\mathcal{L} = - (0 \cdot \log 0.1 + 1 \cdot \log 0.7 + 0 \cdot \log 0.2) = -\log 0.7 \approx 0.357$
평가 지표: accuracy
모델 훈련: fit() 메서드 (여기서는 epoch 명시)
예측: predict() 메서드
→ 출력은 각 클래스에 대한 확률. 가장 높은 확률이 해당 데이터의 예측 클래스
예측 결과 해석
[0.99, 0.01, 0.00, 0.00] → class 0 (구매 불가)
[0.30, 0.50, 0.10, 0.10] → class 1 (괜찮은 선택, 낮은 확신)
확률 값의 크기를 통해 모델의 확신 정도도 파악 가능
Shallow vs Deep Neural Networks
항목 | Shallow Neural Network | Deep Neural Network |
은닉층 수 | 1~2개 | 3개 이상 |
입력 처리 | 벡터 형태의 입력만 처리 | 이미지, 텍스트 등 원시(raw) 데이터 처리 가능 |
특징 추출 | 직접 설계 필요 | 자동으로 특징 추출 가능 |
복잡도 | 낮음 (이해 및 학습 쉬움) | 복잡함 (성능은 우수하나 학습 어려움) |
Deep Learning Boom 원인
딥러닝이 최근 급격히 발전한 배경은 다음 3가지로 요약됨
- 기술적 발전
예를 들어, ReLU 활성화 함수의 도입으로 vanishing gradient 문제 극복할 수 있었고, 덕분에 매우 깊은 신경망의 학습 가능해졌다. - 데이터
딥러닝은 대용량 데이터에서 학습 효과가 탁월하며, 기존 머신러닝 알고리즘은 일정 데이터 이상에서는 성능 향상에 한계가 존재했다. 하지만, 딥러닝은 데이터가 많을수록 성능이 계속 향상되는 것을 보였다. - 연산 자원(컴퓨팅 파워)의 발전
GPU의 등장으로 수일 걸리던 학습이 수시간 내로 단축되었다. 덕분에 다양한 실험 및 프로토타이핑이 가능해졌다.
'🥇 certification logbook' 카테고리의 다른 글
[Coursera/IBM] Deep Learning & Neural Networks with Keras 코스 소개 (2) | 2025.05.18 |
---|---|
[Coursera/IBM course #2] Using Pretrained Models & Fine-Tuning (0) | 2025.05.18 |
[Coursera/IBM course #2] Transformers & Autoencoders (1) | 2025.05.18 |
[Coursera/IBM course #2] CNN & RNN (1) | 2025.05.17 |
[Coursera/IBM course #2] Backpropagation & Vanishing Gradient & Activation Functions (0) | 2025.05.11 |
[Coursera/IBM course #2] Gradient Descent (0) | 2025.05.11 |
[Coursera/IBM course #2] Neurons and Neural Networks & Artificial Neural Networks (0) | 2025.05.10 |
[Coursera/IBM] Introduction to Deep Learning & Neural Networks with Keras 코스 소개 (1) | 2025.05.10 |