2022년 12월 ChatGPT가 등장한 이래로 딥러닝에 대한 관심에 더욱 가속화 되었어요.
도대체 딥러닝이 뭐길래 그렇게 온 세상을 바꿀 것처럼 이야기할까요?
머신러닝에서 배운 기본을 바탕으로 딥러닝에 대해서 알아 봅시다.

머신러닝과 딥러닝은 내부 구조와 활용범위가 다를 뿐 기본적인 흐름은 같습니다.
다만 딥러닝은 자연어 처리와 이미지 처리에 뛰어난 발전을 이뤘어요.
본 강의에서는 기존 회귀, 분류 문제를 딥러닝 아키텍처로 만들어볼 예정입니다.

키, 몸무게 예제로 퍼셉트론 그려보기
| 키(Y) | 몸무게(X) | 예측 키 | 편향(bias) |
|---|---|---|---|
| 187 | 87 | 187 | 0 |
| 174 | 81 | 181 | -7 |
| 179 | 82 | 182 | -3 |
| 192 | 92 | 192 | 0 |
| 188 | 90 | 190 | -2 |
| 160 | 61 | 161 | -1 |
| 179 | 86 | 186 | -7 |
| 168 | 66 | 166 | +2 |
| 168 | 69 | 169 | -1 |
| 174 | 69 | 169 | +5 |
임의로 , 을 각각 100과 1로 설정하고 해당 식을 바탕으로 편향을 계산하니 위와 같았습니다.
이를 퍼셉트론으로 표현하면 다음과 같습니다.

2단원 선형 회귀 이론을 배우면서 가중치를 임의로 정한다는 말로 은근슬쩍 넘어갔는데요. 이 원리를 한번 알아 보겠습니다.


경사하강법에는 배치 경사하강법, 확률적 경사하강법 등 다양한 알고리즘이 개발 되었어요. 다만, 이 과목의 범위를 넘어가기에 자세한 설명은 하지 않을게요! 우리는 잘 쓰기만 하면 됩니다!
위의 예시는 '키'라는 "수치형 변수"였지만, 타이타닉 문제에서 사망, 생존과 같은 비선형적 분류를 만들기 위해 활성화 함수(Acitvation Fucntion)을 사용하게 되었습니다.
로지스틱회귀 때 배웠던 로지스틱 함수 역시 활성화 함수의 한 예입니다.



히든 레이어를 추가할수록 더 좋은 모델이 나올 줄 알았으나, 실제로는 기울기 소실이라는 문제가 발생하게 됩니다. 그 이유는 인공 신경망의 학습 과정에 있습니다.
인공 신경망의 학습
기울기 소실 문제의 등장

우리가 공부할 때 한 번만 공부하진 않듯 딥러닝에서도 동일한 데이터에 대해서 여러 번 공부할 수 있답니다.

딥러닝 이론을 배웠으니 패키지 사용 방법을 알아봅시다.


좀 더 접근하기 쉬운 Tensorflow와 keras 패키지로 실습을 진행
tensorflow.keras.model 함수 링크
tensorflow.keras.model.Sequential
model.addunitmodel.compileoptimizerloss metricsmse: Mean Squared Erroracc : 정확도f1_score: f1 scoremodel.fitepochsmodel.summary()tensorflow.keras.model.Dense
unitinput_shapemodel.evaluate
model.predict
!pip install tensorflow
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
from sklearn.preprocessing import StandardScaler
weights = np.array([87,81,82,92,90,61,86,66,69,69])
heights = np.array([187,174,179,192,188,160,179,168,168,174])
# Seqiemtial 모델 초기화
model = Sequential()
# 단일층 추가하기
dense_layer = Dense(units=1, input_shape=[1])
model.add(dense_layer)
model.compile(optimizer="adam", loss="mean_squared_error")
model.summary()

model.fit(weights, heights, epochs=100)

model_2 = Sequential()
model_2.add(Dense(units=64, activation="relu", input_shape = [1]))
model_2.add(Dense(units=64, activation="relu"))
model_2.add(Dense(units=1))
model_2.compile(optimizer="adam", loss="mean_squared_error")
model_2.summary()
model_2.fit(weights, heights, epochs=100)


UserWarning: Do not pass an
input_shape/input_dimargument to a layer. When using Sequential models, prefer using anInput(shape)object as the first layer in the model instead.
🡆 공식 문서 참고
from tensorflow.keras import Input
model_3 = Sequential()
model_3.add(Input(shape=(1,)))
model_3.add(Dense(units=64, activation="relu")) # hidden layer 1
model_3.add(Dense(units=64, activation="relu")) # hidden layer 2
model_3.add(Dense(units=1)) # 최종적으로 나올 output이 숫자 하나라서 units=1
# output layer: 회귀 문제이므로 node 1개 & 활성 함수 지정 X
model_3.compile(optimizer="adam", loss="mean_squared_error")
model_3.summary()
model_3.fit(weights, heights, epochs=100, batch_size=10)
→ 이렇게 하면 warning 없이 실행 가능
딥러닝의 기본을 배웠으니 우리가 피부로 느끼는 활용 예시를 간단하게 알아봅시다.

언어라는 특성상 문맥의 고려가 필수적인데, 위 방식은 문맥을 고려하지 않아서 인공 신경망의 발전을 토대로 문맥을 모델이 개발되었어요.
이 모델들이 현재 OPEN AI의 ChatGPT 서비스의 연장선에 있는 것입니다.
☞ Transformer 모델 - 기계번역의 예시

이런 기반에서 최근에는 빅테크들이 각자의 LLM(Large Language ModeL)을 개발해서 서비스화 하는 중이랍니다.
과연 LLM의 끝에는 인공지능 자비스가 기다리고 있을까요?

이미지는 색깔이 이미 데이터이기 때문에 합성 곱 연산을 통해 딥러닝 모델에 학습하고 이미지를 생성하는 방식으로 발전해왔습니다.
(예) 숫자 2를 예측하는 딥러닝의 구조

(예) 합성 곱(CNN) 연산의 예시

🡆 합성 곱: 가지고 있는 특성을 행렬과 행렬 간 연산을 통해 2x2로 줄임
최근의 이미지 모델의 특징은 단순히 이미지를 입력 받는 것을 넘어서 텍스트, 이미지, 음성 등 다양한 유형의 데이터를 함께 사용하는 Mutimodal의 시대가 도래했어요.
특히 Stable Diffusion은 커뮤니티가 발달해 쉽게 설치할 수 있어 접근성도 매우 뛰어납니다.
☞ SK Devocean 테크 블로그

숨 가쁘게 머신러닝에 대해 알아보았습니다. 지금까지 배운 것을 바탕으로 정리해볼게요.
그럼 이렇게 배운 머신러닝을 각 직군은 어떻게 써먹을 수 있을까요?
직군에 대한 간략한 설명과 머신러닝 적용방안은 다음과 같습니다.