이 네모박스에 적힌 글은 책의 내용 중 제가 중요하다고 생각된 부분을 그대로 옮긴 것입니다.
✼ 머신러닝 기반 해결책이 만들어지는 데 까지는 여러 시행/착오가 동반됩니다.
✼ 머신러닝, 인공지능, 딥러닝을 일종의 Magic 키워드라고 생각하지 않고 문제를 들여다보는게 좋겠네요.
✼ 경험적으로 알게된(규칙)으로 풀 수 없는 문제를 풀어내는 능력 때문에, "와 이제까지 해결안되던걸?" 같은 느낌때문에 Magic 이라고들 많이 생각합니다. 하지만 Magic 을 만들어내는 데는 상당한 노력이 필요합니다. 결과물이 Magic일 뿐이지, 결과물을 만드는 과정이 Magic은 아닙니다.
경험적으로 해결책을 정의할 수 "없는" 문제에 적합한 시스템을 만들 때 특히 머신러닝이 유용합니다. 하지만, 머신러닝으로 어떤 작업을 해결할 수 있는지 정확히 구별하기란 어렵습니다. 연구 논문이나 기업 블로그에서 발표한 성공적인 결과 이면에는 그럴싸한 수백 개의 실패한 아이디어가 있습니다. - p27
✼ 머신러닝을 이런저런 문제를 풀어야 겠다! 라고 생각하는것 보다는
✼ 이런저런 서비스, 제품, 연구을 만드는게 목적인데, 여러가지 시도로 풀리지 않는 시점에 머신러닝을 들여다 보는것이 좋습니다.
✼ 머신러닝 모델을 학습시키고, 서비스에 통합시키고, 운용하는 데는 상당한 추가 비용이 발생하기 때문에 가능하다면 머신러닝 없이도 해결될 수 있는 문제인지를 생각해 봐야합니다.
머신러닝이 성공할지 예측하는 확실한 방법이 현재는 없지만, 위험을 줄일 수 있는 가이드라인이 있습니다. 항상 "제품의 목표"를 고려해 최선의 방법을 결정하는 것이 가장 중요합니다. 이 단계에서는 머신러닝 포함 여부와 상관없이 모든 방법을 고려합니다. 머신러닝 접근법을 고려할 때는 단순히 얼마나 흥미로운지가 아니라 제품에 얼마나 잘 맞는지에 기초하여 평가해야 합니다. - p29
✼ 머신러닝 모델은 결국 데이터에 기반합니다. 따라서 모델링만큼, 또는 더 중요한것이 곧 데이터입니다.
✼ 대표성을 보다 유연하게 만들기위한 기법이 많이 등장하지만, 여전히 원본 데이터에 담긴 대표성은 중요합니다.
✼ 특정 공개 데이터셋에 대한 연구논문을 작성하는것이 아니라, 서비스나 제품을 만드는것을 고려한다면 데이터를 수집부터 해야하며, 수집된 데이터를 직접 눈으로 확인하는 수작업이 반드시 필요합니다(대표성 확인).
모델은 제공된 데이터에서만 학습하기 때문에 "대표성"을 가진 입력 데이터가 매우 중요합니다. 데이터셋이 전체 모집단의 부분집합에 해당하는 일부 샘플만 담고 있다면 훈련된 모델은 이 부분집합에서만 유용합니다. 이런 점을 고려하면 특정 제품을 위한 데이터셋이 사전에 존재할 가능성은 매우 낮습니다. - p39
✼ 일반적으로 "유사 레이블"을 가진 데이터 까지는 축적된 경우가 많습니다.
✼ 따라서 "유사 레이블" 데이터를, 내가 원하는 목표에 맞출 방법을 고민해 보는것이 좋습니다.
✼ 원천적으로 밑바닥에서 새로 구축해도 좋지만, 여기에는 막대한 인적/시간적/비용적 자원이 소비되기 때문에 최후의 보루로 생각하는것이 바람직할 것입니다. 도저히 머신러닝을 염두에 두지 않고 수집했던 데이터로는, 유의미한 모델을 얻기 힘들다는 판단이 서면 이 때는 빠르게 결정을 내려야 할 것입니다.
데이터 타입
✼ 입력을 출력에 매핑하는 것으로 문제를 정의. 정확히 찾으려는 매핑 데이터를 구하기 어렵기 때문에 대안 시나리오를 고려하는것이 좋습니다. 이를 데이터에 대한 욕구의 단계(hierarchy of needs)라고 생각하세요.
데이터 가용성
✼ 1. 레이블을 가진 데이터가 있는 경우, 2. 유사 레이블을 가진 데이터가 있는 경우, 3. 레이블이 없는 데이터가 있는 경우, 4. 데이터를 수집해야 하는 경우
✼ 유사 레이블을 가진 데이터셋은 모델이 학습하는 데 도움이 되는 정보를 갖지만, 정확한 답을 가지고 있지 않은 데이터셋을 의미
데이터셋을 만드는 일은 반복적인 작업
✼ 즉각 찾을 수 없으므로, 점진적으로 정의해나가는것이 좋습니다. - p40
초기 방식
✼ 문제를 수작업으로 풀어봅니다.
✼ 여기서 수작업이란, 전통적인 프로그래밍 방식으로 규칙 기반 프로그램을 만드는것을 의미합니다.
✼ 전체적인 과정을 이해할 수 있으며, 전체 시스템 파이프라인 중 머신러닝 모델링을 제외한 부분의 설계와 디버깅이 가능합니다.
✼ 여전히 도메인(특정 분야) 전문가의 지식은 도움이 됩니다.
가장 간단한 방법은 내가 알고리즘이 되어보기
✼ 주어진 문제에 대한 최선의 자동화 방법을 이해하기 위해 수동으로 작업을 해결해보는 것입니다.
✼ (머신러닝 에디터 설계 (예시))... 데이터를 전혀 사용하지 않고 사전 지식을 사용해 질문이나 텍스트를 잘 쓰도록 만드는 방법을 정의하는 겁니다. 일반적인 작문 기술을 알기 위해 전문적인 편집자에게 도움을 얻거나 신문의 기사 작성 가이드를 살펴볼 수도 있습니다. 또한 데이터셋에서 개별 샘플과 트렌드를 확인하고 이런 정보를 모델링 전략에 활용해야 합니다. - p44
✼ 초기 머신러닝 모델도 최대한 간단하게 만듭니다.
✼ 이미지 분류라면 LeNet-5 수준으로 시작해 보는것도 좋습니다.
✼ 최대한 간단한 모델이 최대한 과적합 될 때까지 학습을 진행하고, 그 모델의 한계에 도달 했을 때, 새로운 모델을 점진적으로 도입하는것이 좋습니다.
초기에는 머신러닝을 사용하지 않지만, 기준 모델을 빨리 구현하고, 모델을 평가하는 척도로 사용할 수 있기 때문에 중요한 단계입니다. 또한 초기 머신러닝 모델도 다음에 무엇을 만들지에 관한 좋은 정보를 제공할 수 있도록, 최대한 간단한 모델을 고르는것이 좋습니다. - p47
머신러닝 에디터 설계 (예시) - 엔드투엔드 프레임워크의 난관
데이터
✼ 같은 의도를 가지지만 작문 품질 수준이 다른 질문의 쌍을 구해야합니다. 매우 찾기 어렵고, 데이터셋을 만들려면 전문 편집자의 도움을 받아서 데이터를 생성해야 하므로 비용이 많이 듭니다.
모델
✼ Seq2Seq 같은 생성 모델. 지금까지의 모델은 대부분 문장 수준의 작업에만 기반했습니다. 많은 모델 파라미터를 사용하기 때문에 훈력 속도가 느립ㄴ디ㅏ. 만약 매시간/매일 다시 훈련해야 한다면 훈련 시간이 중요한 요소가 될 수 있습니다.
응답 속도
✼ Seq2Seq는 일종의 자기회귀 모델. 이전 출력을 다음 출력을 만드는 데 사용하므로, 훈련과 추론이 느릴 수 있습니다.
그 외 구현의 복잡성
- p43
모니카 로가티 인터뷰
✼ "수동으로 뭔가를 해보는게 중요하다"라는 부분이 인상적이었습니다. 머신러닝은 블랙박스적인 요소가 많기 때문에, 당장 머신러닝으로 시작했을시 터져나오는 여러가지 문제를 제대로 파악하는 기준을 설정하기 어려운 경우가 있습니다.
✼ 홍보 목적도 있겠지만, SNS를 활용하는 또 다른 시각도 흥미로웠습니다. 시스템 전체 차원에서, 내가 만드는것이 어떤 이득을 만들어낼 수 있을것인가를 좀 더 객관적으로 들여다 볼 수 있습니다. 다 만든 후 글을 쓰면, 결과에 맞춰 합리화된 내용이 알게모르게 들어갈 수 있습니다.
✼ 머신러닝은 만능이 아닙니다. 결국 머신러닝이 실패했을때를 대비한 규칙기반의 로직도 반드시 필요합니다.
✼ 타당성이 있을 때만 머신러닝을 사용해야 합니다.
✼ 모델링과 제품에 대한 논의를 함께 진행하고, 머신러닝이 실패할 때 우아하게 처리하도록 제품을 설계해야 합니다.
✼ 파이프라인의 디버깅은 모델을 간단한 것으로 바꾼 뒤 진행하는것이 좋습니다.
✼ 요약의 경우 단순히 해당 글에서 다루는 상위 키워드나 카테고리를 뽑는 것으로도 대부분의 사용자 요구를 충족할 수 있는 경우가 많습니다. => 머신러닝까지도 필요 없는 경우를 항상 염두에 둔다.
✼ 프로젝트를 시작하기도 전에 데이터 과학자에게 트윗을 쓰거나 회사에 보도 자료를 작성하라고 권장합니다. 이렇게 하면 본인이 노력했기에 멋지다고 생각하거나 결과를 강조하는 실수를 피할 수 있습니다.
✼ 사용될 모델링 기술은 먼저 데이터를 직접 살펴본 뒤 결정합니다. 데이터를 들여다보면 유용한 경험을 얻고, 모델에 대해 생각하고, 제품을 재구성하는 데 도움이 됩니다.
✼ IBM에서 제 부서장은 어떤 일을 하기 전에 항상 한 시간 정도는 수동으로 직접 해봐야 한다는 철칙을 가지고 있었습니다.
✼ 최후의 보루는 결과를 내기 위해 많은 인력을 투여하는 것입니다.
- p48
'머신러닝 파워드 애플리케이션' 카테고리의 다른 글
| 4장 초기 데이터셋 준비하기 (0) | 2021.11.29 |
|---|---|
| 3장 엔드투엔드 파이프라인 만들기 (1) | 2021.11.27 |
| 2장 계획 수립하기 (0) | 2021.11.26 |