딥러닝의 원리와 아키텍쳐에 대해서 알아봅시다.
2022년 12월 ChatGPT가 등장한 이래로 딥러닝에 대한 관심에 더욱 가속화 되었어요. 도대체 딥러닝이 뭐길래 그렇게 온 세상을 바꿀 것 처럼 얘기 할까요? 머신러닝에서 배운 기본을 바탕으로 딥러닝에 대해서 알아 봅시다.
머신러닝과 딥러닝은 내부 구조와 활용범위가 다를 뿐 기본적인 흐름은 같습니다. 다만 딥러닝은 자연어처리와 이미지 처리에 뛰어난 발전을 이뤘어요. 본 강의에서는 기존 회귀,분류 문제를 딥러닝 아키텍처로 만들어볼 예정입니다.
- 공통점: 데이터로부터 가중치를 학습하여 패턴을 인식하고 결정을 내리는 알고리즘 개발과 관련된 인공지능(AI)의 하위 분야
- 차이점
- 머신러닝: 데이터 안의 통계적 관계를 찾아내며 예측이나 부류를 하는 방법
- 딥러닝: 머신러닝의 한 분야로 신경세포 구조를 모방한 인공 신경망을 사용함.

키 몸무게 예제로 퍼셉트론을 그려보자
선형회귀식
몸무게와 키 데이터
| 키(Y) | 몸무게(X) | 예측 키 = 키 *1+ 100 | 편향(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단원 선형 회귀 이론을 배우면서 가중치를 임의로 정한다는 말로 은근슬쩍 넘어갔는데요. 이 원리를 한번 알아 보겠습니다.

Mean Squared Error(MSE): 에러을 제곱한 총합의 평균
즉, 가중치(weight)를 이리 저리 움직이면서 최소의 MSE를 도출해내면 된다.
- 이렇게 최소화하려는 값을 목적 함수 혹은 손실 함수(cost function)이라고 명명

경사 하강법(Gradient Descent)은 모델의 손실 함수를 최소화하기 위해 모델의 가중치를 반복적으로 조정하는 최적화 알고리즘이며, ** weight를 찾기 위한 직관적이고 빠른 계산 방법이에요. 변수 X가 여러 개 있다면 동시에 여러 개의 값을 조정하면서 최소의 값을 찾으면 된답니다.
경사하강법에는 배치 경사하강법, 확률적 경사하강법** 등 다양한 알고리즘이 개발 되었어요. 다만, 이 과목의 범위를 넘어가기에 자세한 설명은 하지 않을게요! 우리는 잘 쓰기만 하면 됩니다!
위의 예시는 키라는 수치형 변수였지만, 타이타닉 문제에서 사망,생존과 같은 비선형적분류를 만들기 위해 활성화 함수(Acitvation Fucntion)을 사용하게 되었습니다. 로지스틱회귀 때 배웠던 로지스틱 함수 역시 활성화 함수의 한 예입니다.


또한, 데이터를 비선형적으로 변환함과 동시에 데이터의 고차원적 특성(ex 이미지, 자연어)을 학습하기 위해 중간에 입력과 결과 외의 추가하게 되는 숨은 층(Hidden Layer)의 개념이 등장합니다.
하지만, 히든 레이어를 추가할 수록 더 좋은 모델이 나올 줄 알았으나, 실제로는 기울기 소실이라는 문제가 발생하게 됩니다. 그 이유는 인공 신경망의 학습 과정에 있습니다.

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

패키지 사용 방법 알아보기
딥러닝 패키지


- Pytorch: 메타(전 페이스북)의에 개발되었다. 토치(torch)기반의 딥러닝 라이브러리
우리는 좀 더 접근하기 쉬운 Tensorflow와 keras 패키지로 실습을 진행하도록 할게요
tensorflow.keras.model.Sequentialmodel.add: 모델에 대한 새로운 층을 추가함
unitmodel.compile: 모델 구조를 컴파일하며 학습 과정을 설정
optimizer : 최적화 방법, Gradient Descent 종류 선택
loss : 학습 중 손실 함수 설정
- 회귀 : mean_squared_error(회귀)
- 분류 : categorical_crossentropy
metrics : 평가척도
- mse: Mean Squared Error
- acc : 정확도
- f1_score: f1 score
model.fit: 모델을 훈련 시키는 과정
epochs: 전체 훈련 데이터 셋에 대해 학습을 반복하는 횟수model.summary(): 모델의 구조를 요약하여 출력
tensorflow.keras.model.Dense: 완전 연결된 층
unit: 층에 있는 유닛의 수. 출력에 대한 차원 개수input_shape:1번째 층에만 필요하면 입력데이터의 형태를 지정model.evaluate: 테스트 데이터를 사용하여 평가
model.predict: 새로운 데이터에 대해서 예측 수행
딥러닝의 기본을 배웠으니 우리가 피부로 느끼는 활용 예시를 간단하게 알아봅시다.

언어라는 특성 상 문맥의 고려가 필수적인데, 위 방식은 문맥을 고려하지 않아서 인공 신경망의 발전을 토대로 문맥을 모델이 개발되었어요. 이 모델들이 현재 OPEN AI의 ChatGPT 서비스의 연장선에 있는 것 입니다.
Transformer 모델 - 기계번역의 예시
이런 기반에서 최근에는 빅테크들이 각자의 LLM(Large Language ModeL)을 개발해서 서비스화 하는 중 이랍니다. 과연 LLM의 끝에는 인공지능 자비스가 기다리고 있을까요?

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

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