






SW 1.0(규칙 기반 프로그래밍) -> SW 2.0(자동 프로그래밍=딥러닝 + 사전학습,미세조정) -> SW 3.0(초거대 모델&제로샷/퓨샷)
[ 학습단계 1 ] 학습데이터 준비
(1) 데이터 수집 : 무엇이 좋은 데이터인가? 각각 몇 개의 샘플을 모아야 하는가?
(2) 학습 데이터 생성(라벨링/어노테이션) : 다수의 데이터라벨러가 공통된 기준으로 라벨링 작업을 할 수 있게 하는 가이드 라인은 무엇인가?
*"학습을 한다" = 최적의 프로그램을 찾는다 = 최적의 연산방법을 정한다 : 연산의 "결과값"과 데이터라벨러가 입력한 "정답값"이 일치하는 연산이 최적의 연산이며, 이를 반복하며 결과값과 정답값 차이의 오차를 줄여나가는 과정이 곧 학습임
[ 학습단계 2 ] 모델 학습(실질적인 학습 단계)
(1) 모델 구조를 만든다
(2) 모델 구조에 최적의 연산 집합을 찾아낸다(by. Try&Error 방식) : Try1에서 랜덤하게 연산들을 만들어냄 -> 랜덤하게 만든 연산의 예측값들(결과값)과 정답값들의 오차를 계산하여 Try1의 오차 평균을 구함...
(3) 같은 방식으로 TryN 시행한 후 오차(Error)가 가장 작은 Try'k'가 최적의 연산집함 = 최적의 모델 = 학습 완료된 모델 = 추론 시 사용되는 모델(서비스 사용시)
[ 딥러닝 ] 모델 구조(기본)
(1) 딥러닝 연산의 틀은 레이어, 레이어는 복수의 레이어로 구성, Neural Network에서는 각각의 노드 단위로 연산이 수행
(2) 레이어가 많은 깊은 구조 = 딥뉴럴네트워크
(3) 딥뉴럴네트워크를 학습시키는 방식 = 딥러닝
(4) 주로 이미지 처리에서는 CNN, 자연어 처리에서는 RNN 방식이 효율적이며 효과적인 것으로 알려져있음(CNN, RNN과 같이 이미 여러 사람들을 통해 "검증된 연산 틀(모델)"이 많이 존재함)
자연어 처리 과정 : 텍스트 수집 -> 정의된 특징(토큰화) -> (토큰 단위로 특징값을 추출, 판단하면서)학습 데이터 생성
- 토큰 = 의미 단위의 기본 유닛(의미분석에 용의한 단위로 잘게 쪼개는 것 = 토큰화)
[ 딥러닝 방식의 변형(고도화) ] 사전학습 & 미세조정 (본 강의 26:00~)
(1) 학습 효율화를 높이기 위함 : 기존 방식의 비효율성(태스크 바뀔때마다 다른 모델이 필요)
(2) 학습을 사전학습(특징찾기), 미세조정(판단하기) 2단계로 나누어서 진행
= step 1(사전학습) : 판단하기를 배제한 채로 특징 찾기만 열심히 학습하기 -> 어떤 데이터가 입력되어도 특징을 잘 찾아내도록 훈련시키는 것이 목적(사전학습&미세조정 방식의 핵심)
= step 2(미세조정) : 사전학습 단계에서 완료한 "특징찾기"는 추가로 학습하지 않고(=frozen=이미 사전학습된 연산을 그대로 차용=미세조정 단계에서는 학습대상에서 제외시킴) -> 판단하기만 열심히 학습(이 모델로 내가 찾고자 하는 것이 무엇인지 판단하는 것만 새로 학습 = 판단기준만 바꿔기면 ok, 딥뉴럴네트워크 구조에서 판단하기는 말단에 존재하므로...)
(3) 그럼에도 여전히 태스크마다 다른 모델이 필요하지만, 전체를 매번 다시 학습하는 것보다 모델이 연산해야 하는 양이 확연히 줄어드는 효과를 거둘 수 있음
(= 특정 태스크를 수행하는 모델 개발에 필요한 데이터의 양 축소 = 개발기간 축소 = 비용 축소 = 개발속도 급증 = 다양한 산업에서 AI를 널리 사용할 수 있는 발판 마련)
사전학습 & 미세조정 text data 관점에서 살펴보기(eg. GPT1)
본 강의 32:50 ~
(1) 이미지와 달리 자연어는 자유도가 높고, 문장의 길이가 다양하며, 문장/맥락에 따라 문화에 따라 내포하는 의미가 달라짐
(2) 기존의 사전학습(사람의 라벨링 작업이 반영)과는 다른 방식의 학습이 필요 : 입력된 텍스트만을 보고도 모델이 바로 정답을 출력하는 방식이 필요하다!(= Un-supervised pre-training = Self-supervised pre-training
= Language Model : 앞에 나온 단어를 보고 바로 뒤에 나올 단어를 예측하라!(다음에 나올 단어로 가장 확률이 높은 단어가 무엇이지?)
(3) 사전학습 단계에서는 라벨링 작업이 없지만, 미세조정에서 라벨링 작업이 필요함 -> 긍정 or 부정 리뷰(by.윤리적 판단)
- AI를 적용하는 것이 실제로 서비스에 큰 임팩트를 줄 수 있다고 판단될 때!
-> AI가 잘 할 수 있는 영역인가? : AI를 적용하는 것이 비효율적인 경우도 고려할 것!
-> 현재의 AI기술로 실현 가능한가? : 쉽게 적용할 수 있는지? 어렵지만 해볼 수 있는 정도인지? 현실적으로 불가능한지? (개발팀과의 긴밀한 협의 필요)
자동화, 예측, 개인화, 자연어 이해


[참고 1]
- OCR은 글자 인식만 가능
- 따라서 서비스에 활용할 땐 대체로 OCR과 parsing(의미분석 기술)을 함께 사용함.
- 그러나 서비스 내용에 따라서 의미분석은 AI보다 휴리스틱으로 하는 것이 비교적 더 간단한 경우도 많음(개발자 의견 청취 필요)
[참고 2]
- 서비스 개발 시 관련 외부 API가 있다면, API를 활용하고 디테일한 부분에 한하여 필요한 모델만 직접 개발하여 내재화하는 방향이 다수(단, 이 경우 외부 API비용 검토와 서비스 약관, 법무적인 이슈를 함께 파악해야 함)
- 라벨링 작업 = 어노테이션 / 자체적으로 라벨링툴을 활용하여 외부 인력(아르바이트)을 사용하여 작업하는 경우 다수
- 개발 과제 요구사항 파악
- 일정 수립
- 서비스 법무 검토
- R & R 세팅 등
= AI 모델 개발에 필요한 기준을 정립
- 과제 요구사항 명확화 : 데이터 / 평가방식 / 모델측면
[ 데이터 ]
(1) 얼마만큼의 학습용 데이터(비용과 직결)와 테스트용 데이터(모델 평가와 직결)가 필요한가?
(2) 어떤 종류의 데이터가 필요하며(데이터 다양성), 필요한 데이터를 판별하는 기준이 명확해야 함
(3) 엣지 케이스도 충분히 확보해야 함('특이사항'을 의미하는 엣지케이스의 구체적인 정의도 필요함)
-> 엣지케이스(희귀 케이스)를 얼마나 커버하느냐가 성능 차별화, 개선 포인트가 됨
[ 평가방식 ]
(1) 사용 시나리오를 바탕으로 서비스의 평가방식을 도출
(2) 정확도, 재현율, F1 score ...
[ 모델 요구사항 ]
(1) 처리 시간 : 하나의 입력이 처리되어 출력이 나올 때까지 소요되는 시간
(2) 목표 정확도 : 해당 기술의 정량적인 정확도
(3) 목표 qps(Queries per second) : 초당 처리 가능한 요청 수
- 개발 관점에서 '하루 평균 사용량'은 크게 중요하지 않음, 중요한 건 QPS임
- 순간 최대 사용량이 어느 정도일 것인지 예상해야 함 -> 인프라와 모델 메모리 사양, 처리 시간을 고려하기 위함
-> 인프라(서버 갯수), 모델(모델이 차지하는 메모리의 크기, 처리 속도)
(4) 서빙 방식 : 모바일, 로컬 CPU/GPU server, cloud CPU/GPU server 등..
휴대폰에서 동작? 서버에서 동작? 서버라면 로컬 or 클라우드?
- 보안 측면 : 모바일이 가장 안전
- 비용 측면 : 데이터 이동으로 인한 비용 발생 예상
- 서비스 품질 : 서비스 관점에서의 속도
-> (AI 모델의 경우) 일반적으로 모바일> gpu 서버 > cpu 서버 순으로 속도가 빠름
(5) 장비 사양
1) 어떻게 하면 좋을지에 대해서 알려져 있지 않다.
2) 데이터 라벨링 작업은 생각보다 많이 어렵다
-> "라벨링 노이즈"가 많으면 데이터가 많아도 성능은 오히려 떨어진다.
라벨링 노이즈 : 여러 사람에게 같은 라벨링 작업을 시켰을 때 작업 결과가 다른 정도
-> 잘못 라벨링된 샘플 하나를 무시하기 위해서는 두 배 이상의 데이터가 필요함
3) 데이터 불균형을 바로 잡기가 많이 어렵다
-> 본 강의 31:10 ~
(각 단계별 상세 체크리스트는 교재ch.03 참고)
[ 데이터 ]
1) 데이터 디자인
2) 원천 데이터 조사 및 수집
3) 데이터 스킴 정의 및 설계
4) 데이터 준비
[ 모델 ]
5) 모델 트레이닝 및 데이터 리파인
[ 상품화 ]
6) 배포
7) 유지보수

- 테스트 방법 설계 : ON/OFF line 테스트
- 정량평가 메트릭 : F1 score, BLEU score, accuracy, precision, recall

OFF LINE test
ON LINE test
모델의 정확도는 얼마인가? (for 최적화)
Accuracy (정확도)
-> 클래스 불균형(class imbalance) 시 학습 데이터에 대한 정확도에 문제가 발생할 수 있음
Precision (정밀도)
-> eg) 분류기가 o이라고 예측한 것이 실제로 모두 o으로 판별하도록 (적중률이 100에 가깝도록, 조금의 오차도 없도록)

- 오인식을 줄일 것이냐 (precision) vs 미발견을 줄일 것이냐 (recall)
-> preicision / recall 은 서비스 품질과 직결
-> 모델러가 어디에 집중하게 할 것인지 판단하는 기준이 되기 때문
-> 암 진단, 알러지 성분 탐지의 경우 recall이 precision 보다 더 중요 : 놓치지 않을 거야!
-> 상품 추천의 경우 precision이 recall 보다 더 중요 : 틀리지 않을 거야!
F1 score
-> precision과 recall을 한 번에 보는 수치, 일종의 평균
BLEU score (본 강의 19:15~) / Bilingual Evaluation Understudy
-> 기계번역 시스템이 생성한 번역문이 얼마나 자연스럽고 정확한지 평가할 때 사용하는 지표 : 연속된 precision의 가중 평균
-> BLEU가 높다고 반드시 자연스러운 번역을 의미하는 것은 아니지만(문맥, 문장구조, 의미 등을 고려하지 않음) 성능 평가에 유용한 도구로 널리 사용중
- 서빙 상황에 맞게 모델을 최적화
- target device에 맞춰 모델을 서빙하기 위한 작업


대표적으로 고려해야 할 사항들
Cloud AI vs Edge AI(모든 것이 장비 안에서 이루어짐 로컬 디바이스)
[모델 업데이트 주기] Offline learning(긴 주기) vs Online learning(짧은 주기)
[결과값 업데이트 주기] Batch(offline) inference vs Online inference
서빙 시스템 디자인 예시 : 본 강의 18:30 ~
비용과 직결되는 서빙 시스템 : 본 강의 20:45 ~



(각 드리프트별 체크리스트 참고)



멘탈모델 형성이 중요한 이유
멘탈 모델 체크리스트
