일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자연어처리
- 파이썬
- 코로나19
- github
- PYTHON
- hackerrank
- Baekjoon
- 금융문자분석경진대회
- Git
- 캐치카페
- 우분투
- ubuntu
- 더현대서울 맛집
- Real or Not? NLP with Disaster Tweets
- dacon
- 프로그래머스
- 백준
- programmers
- gs25
- ChatGPT
- AI 경진대회
- 편스토랑
- 데이콘
- 맥북
- Kaggle
- Docker
- SW Expert Academy
- leetcode
- 편스토랑 우승상품
- 프로그래머스 파이썬
- Today
- Total
솜씨좋은장씨
[올인원패키지 : 딥러닝/인공지능] 딥러닝! 넌 누구냐! ( 강의 복습 ) 본문
평소에 공부하면서 딥러닝에 대한 기초적인 개념은 까먹고 있는 것 같아
패스트 캠퍼스의 강의를 통해 딥러닝에 대해서 처음부터 차근차근 다시 살펴보며 공부하기로 하였습니다.
앞으로 강의를 듣고 강의에서 기억했으면 좋겠다 하는 내용에 대해서 하나씩 적어보려합니다.
딥러닝의 전체 구조
딥러닝의 구조를 간단하게 살펴보면
Data를 Model에 넣고 예측 (Logit) 하고 예측한 값에 대해서 얼마나 틀렸는지 (Loss, 오류율)를 계산 한 후
이 오류율을 최소화하는 작업(Optm)을 거쳐 다시 그 값을 Model에 넣고 Loss가 최소화 될때까지 반복한 뒤
결과(Result)를 도출하는 방식입니다.
학생이 문제집을 풀었을때 틀린 갯수가 가장 적어지기 위해서 공부를 하는 것에 비유를 들어보면
학생이 문제집을 사서(공부할 데이터 Data) -> 공부를 한다 (Model) -> 문제를 푼다 (Logit)
-> 얼마나 틀렸는지 정답지와 비교해보며 확인한다 (Loss) -> 어떤 것을 틀렸는지, 틀린 이유, 부족한 점을 파악한다 (Optm)
-> 파악한 정보를 가지고 다시 공부를 한다 (Model) -> 계속 공부를 하다가 가장 적게 틀리게 되었을때 공부를 마친다.
와 같이 비유를 해볼 수 있습니다.
이제 각각 하나하나 어떤 것인지 살펴보겠습니다.
Data
모델 학습에 사용되는 데이터, 학습에 사용되는 데이터 입니다.
모델을 학습 시키기 위해서 모델에 데이터를 넣기 전에 다양한 방법을 통해 전처리를 합니다.
보통 데이터의 양이 많아 여러개의 Batch로 나누어 넣습니다.
Model
LeNet, AlexNet, Bert 등 설계되어있는 모델입니다.
각각의 모델은 다양한 Layer들이 겹겹이 쌓여있는 형태로 구성되어있습니다.
모델 안에 학습 파라미터 ( weight )이 있고 이 것이 학습의 대상입니다.
모델은 어떠한 데이터가 들어왔을때 그 데이터에 대해서 Feature를 찾고
잘 분류하는 특징을 찾아서 class로 나누어 줍니다.
프로젝트 또는 데이터의 성향에 따라 어떠한 모델을 쓸것인지 선택합니다.
Logit / Prediction
[0.15, 0.3, 0.2, 0.25, 0.1] <- 각 class 별로 예측한 값
여기서 가장 높은 확률의 값이 모델이 예상하는 class 또는 정답
만약 정답이 [0.0, 0.0, 0.0, 1.0, 0.0] 이라고 한다면 얼마나 틀렸는지 맞았는지 확인이 가능함
Loss / Cost
Model이 예측한 값과 실제 정답이 얼마나 차이가 나는지 ( 얼마나 틀렸는지 ) 확인
Cross Entropy 등 다양한 Loss Function 들이 있음
Optimization
앞에서 얻은 Loss 값을 최소화 하기 위해 기울기를 받아 최적화된 Variable값들로 반환하는 작업
이 반환된 값이 적용된 Model이 바로 전의 결과보다 더 나아지게 됨
이때 최적화된 값 만큼 움직이는 것이 아닌 사람이 설정한 Learning Rate 만큼 움직임
Result
평가할때 예측된 결과를 확인할때 예측된 값에서 argmx를 통해 가장 높은 값을 예측한 것을 답 or class라고 함
만약 예측한 것이 [0.15, 0.3, 0.2, 0.25, 0.1] => 0.3에 해당하는 것이 Result
Batch Size
한번에 모든 데이터를 Model에 넣을 수 없으니 특정한 양(Batch Size)만큼 씩 나누어 넣어줌
Weight
y = Wx + b
y -> output / W -> weight / x -> input / b -> bias
학습하려고 하는 대상 / 더 좋은 feature를 뽑기 위한 값
Learning Rate
사람이 설정해주어야하는 하이퍼 파라미터
너무 크게 설정하면 최적화 된 값을 못찾고 넘어갈 수 있고
너무 작게 설정하면 최적화 된 값을 찾기까지 너무나 오랜 시간이 걸림
적당한 값으로 설정해주는 것이 포인트
강의를 들으면서 필기를 한 내용을 러프하게 적어보았습니다.
내용에 이상한 점, 틀린점이 있다면 댓글을 통해 가감없는 첨언 부탁드립니다~!
읽어주셔서 감사합니다!