CS230 Deep Learning
Lecture 3. Full-Cycle Deep Learing Projects
이번 강의는 회사 단위에서 큰 딥러닝 프로젝트에서 ML 모델을 어떻게 학습하는지에 대해 다루었다.
Ng 아저씨가 강의를 진행했고, 슬라이드 없이 판서로 진행하셨다.
(Ng 아저씨는 강의노트보다는 판서가 편하신듯)
좋은 딥러닝(DL) 전문가가 되려면?
- Interest
- Data
- Domain Knowledge: 특정 분야의 도메인 지식은 해당 분야에 unique한 기여를 불러올 수 있다. 도메인 지식과 딥러닝 지식은 양자 택일의 문제가 아니라 같이 가져가야 할 문제이다.
- Utility
- Feasibility: 딥러닝으로 현실적으로 실현 가능한 것과 실현 불가능한 것을 구분할 수 있어야한다. 큰 회사의 CEO, CTO조차 이를 구분하지 못하는 경우가 있다.
ML 프로젝트 / 어플리케이션 Steps
1. Select Problem: 문제를 정의한다.
2. Get data: 학습할 데이터를 획득한다.
3. Desigin Model: Model 구조, 하이퍼파라미터 등 모델을 디자인하한다.
4. Train Model: 데이터를 이용해 모델을 학습한다.
5. Test Model: 학습한 모델이 서비스에 적합한지 모델을 테스트한다.
6. Deploy: 모델을 서비스에 배치한다.
7. Maintain: 모델을 유지보수한다.
(+) Deploy 전후로 꾸준한 QA(Quality Assurance)가 필요하다.
Steps에 대한 설명
- 4. Train 과 5. Test 과정은 모델 학습(Train) 과 검증, 평가(Dev/Test) 과정을 반복한다.
- 이 과정에서 모델 성능이 개선되지 않는다면 2. Get data 와 3. Design Model 과정으로 돌아온다.
- 보통 DL 수업은 2-5의 과정들을 설명하는데 시간을 많이 할애하지만, 본 수업은 실용적인 ML 적용방법에 대해 시간을 많이 할애하고자 한다. 따라서 1, 6, 7에 시간을 많이 사용한다.
Steps에 관련된 예시
- Supervised Learning에서 음성 데이터의 특정 유발 단어를 detect하는 문제를 예시로 든다.
- "Activate" 라는 단어를 인식하는 voice-activated device 예시
- X: audio record
- y: 0/1
- 0: trigger-word(wake word) 미감지
- 1: trigger-word(wake word) 감지
예시에서의 2. Get data
- 위 문제를 풀기 위해서 데이터 몇 개를 언제까지 어떻게 모을 것인가?
- Ng의 답변
- 몇개: 100 ~ 200 개
- 언제: 1 ~ 2일동안
- 어떻게: 스탠포드 캠퍼스를 돌면서 학생들 대상으로 activate / 일반 단어를 녹음
- 이유: 문제를 직접 풀어보기 전에는 딥러닝이 풀기에 쉬운 문제인지, 어려운 문제인지 알 수 없다.
- 따라서 일단 가능한 빠르게 데이터를 모으고 모델링 한 후, 개량해가는 것이 바람직하다.
- 즉, data를 모으고, 모델을 train 하는 cycle 길이를 줄이는게 좋다.
예시에서의 3. Design Model ~ 5. Test Model
- 딥러닝 실험 내용은 최대한 명료하게 기록해가는 것이 중요하다.
- 아래의 그룹 2개가 있다고 하자. 결과는 당연히 그룹 2가 좋을 것이다.
- Group 1: 30개의 모델들을 단지 학습하고, 하이퍼파라미터, 성능은 따로 기록하지 않음
- Group 2: 스프레드 시트에 각 모델별 하이퍼파라미터, learning rate, padding number 등에 따른 성능을 상세히 기록
- 그룹 2의 방법이 실험 후에 결과를 참고하기 쉽고, 결과별 비교도 쉽게 가능하다.
예시에서의 6. Deploy
- 조금 더 복잡한 음성을 인식하는 문제의 경우
- 제품 내에서 데이터를 처리하기에는 한계가 있다 -> Edge device는 한정된 자원을 가져 거대 Neural Net 모델을 돌리기 어렵다.
- 이 경우 제품 내에는 간단한 VAD(Voice Activity Detection) 모듈만 두고, 서버 Cloud에 학습된 거대 뉴럴넷 모델을 사용하는 것이 바람직하다.
- 적용: audio -> VAD 모듈 -> Cloud (Neural Net) -> 0 / 1 예측
- VAD를 통해 서버로 음성 데이터를 보내는 경우, 언제 보낼 것인가
- 1. 특정 데시벨(threshold) 이상이 된 경우 (Non-ML)
- 장점: 알고리즘이 간단함, 빠른 테스트 가능
- 단점: 서버의 부하가 커질 수 있음 (개를 키우는 집은 개가 짖을 때마다 서버로 해당 데이터를 전송할 것
- 2. 사람의 목소리가 인식된 경우(DL)
- 장점: 서버로 보내는 데이터를 사람의 목소리로 한정하여 서버의 부하를 줄일 수 있음
- 단점: 알고리즘 설계와 테스트 시간이 길어짐
- 1. 특정 데시벨(threshold) 이상이 된 경우 (Non-ML)
- 실제로 Ng 아저씨는 해보니까 2. 방법이 맞는거 같다고는 하심.
- 근데 간단한 알고리즘(1)을 먼저 적용해보고, 이로 인해 발생하는 단점을 느끼고 좀 더 복잡한 알고리즘(2)으로 가는 것도 나쁘지 않다고 설명함
실제 현실에 머신러닝을 적용할 때의 문제
- 데이터는 변한다.
- 시간이 지나면 실제 현실의 데이터는 변하게 된다. 이로 인해 모델의 성능이 나빠지는 경우가 많다.
- 현실의 데이터는 실험 데이터와는 다르다.
- Train / Test에서는 문제 없던 모델이 실제 현실의 data에는 적합하지 않을 수 있다.
이 두가지는 학계에서는 잘 얘기되지 않는 문제들로 실제 서비스에 모델을 배치할 때 많이 발생하는 문제이다.
예시에서 발생할 수 있는 문제
- 데이터 문제
- 새로운 악센트 (미국/영국/호주식 등)
- 배경 노이즈
- 마이크의 품질 변화
- 더 나쁜/좋은 마이크의 사용은 음질 데이터 품질을 변화시킨다.
- 기존 데이터로 학습된 모델은 변화된 음질을 일반화하지 못할 수 있다.
- 해결 방법: 새로운 데이터를 더 모아서 모델을 새롭게 디자인한다.
- 위 같은 상황에서는 VAD를 non-ML 모델로 적용하는 것이 바람직할 수 있다.
- 하드웨어의 모델은 업데이트하기 어려울 수 있음
- 클라우드의 모델은 업데이트 하기 쉬움
- 문제를 발견하려면?
- 꾸준한 QA를 통해 모델이 제대로 작동하는지 통계적으로 판단할 수 있어야한다.
- 모델을 업데이트한 경우에도 잘 작동하는지 통계적 검증이 필요하다.
- 문제를 잘 발견하려면 QA 시스템을 꾸준히 진화시켜야한다.
'Study > 딥러닝' 카테고리의 다른 글
[CS230] Deep Learning Lecture 6 Deep Learning Project Strategy (0) | 2022.09.21 |
---|---|
[CS230] Deep Learing Lecture 5 AI + Healthcare (0) | 2022.09.20 |
[CS230] Deep Learning Lecture 4 Adversarial Attacks / GANs (1) | 2022.09.20 |
[CS230] Deep Learning Lecture 2 Deep Learing Intuition (0) | 2022.09.19 |
[CS230] Deep Learing Lecture 1 Class Introduction and Logistics (0) | 2022.09.18 |