Jost Do It.

그냥 IT해.

Study/딥러닝

[CS230] Deep Learning Lecture 3 Full-Cycle Deep Learing Projects

그냥하Jo. 2022. 9. 19. 10:28
반응형

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)
      • 장점: 서버로 보내는 데이터를 사람의 목소리로 한정하여 서버의 부하를 줄일 수 있음
      • 단점: 알고리즘 설계와 테스트 시간이 길어짐

 

  • 실제로 Ng 아저씨는 해보니까 2. 방법이 맞는거 같다고는 하심.

 

  • 근데 간단한 알고리즘(1)을 먼저 적용해보고, 이로 인해 발생하는 단점을 느끼고 좀 더 복잡한 알고리즘(2)으로 가는 것도 나쁘지 않다고 설명함

 

 

 

 

 

실제 현실에 머신러닝을 적용할 때의 문제

  • 데이터는 변한다.
    • 시간이 지나면 실제 현실의 데이터는 변하게 된다. 이로 인해 모델의 성능이 나빠지는 경우가 많다.

 

  • 현실의 데이터는 실험 데이터와는 다르다.
    • Train / Test에서는 문제 없던 모델이 실제 현실의 data에는 적합하지 않을 수 있다.

 

 

이 두가지는 학계에서는 잘 얘기되지 않는 문제들로 실제 서비스에 모델을 배치할 때 많이 발생하는 문제이다.

 

 

 

 

 

 

예시에서 발생할 수 있는 문제

  • 데이터 문제
    • 새로운 악센트 (미국/영국/호주식 등)
    • 배경 노이즈
    • 마이크의 품질 변화 
      • 더 나쁜/좋은 마이크의 사용은 음질 데이터 품질을 변화시킨다.
      • 기존 데이터로 학습된 모델은 변화된 음질을 일반화하지 못할 수 있다.

 

  • 해결 방법: 새로운 데이터를 더 모아서 모델을 새롭게 디자인한다.

 

  • 위 같은 상황에서는 VAD를 non-ML 모델로 적용하는 것이 바람직할 수 있다.
    • 하드웨어의 모델은 업데이트하기 어려울 수 있음
    • 클라우드의 모델은 업데이트 하기 쉬움

 

  • 문제를 발견하려면?
    • 꾸준한 QA를 통해 모델이 제대로 작동하는지 통계적으로 판단할 수 있어야한다.
    • 모델을 업데이트한 경우에도 잘 작동하는지 통계적 검증이 필요하다.
    • 문제를 잘 발견하려면 QA 시스템을 꾸준히 진화시켜야한다.
반응형