Deep Learning for Coders with fastai & PyTorch: 2장 질문지 풀이

Author

Heeyoung Kim

Published

December 19, 2022

1. Provide an example of where the bear classification model might work poorly in production, due to structural or style differences in the training data.

out-of-data 문제가 생길 수 있습니다. 학습 데이터에 곰의 일부분 이미지만 사용된 경우, 명도가 맞지 않는 경우 등에는 정확도가 떨어질 수 있습니다.

2. Where do text models currently have a major deficiency?

텍스트 모델은 100% 정확한 답을 내놓을 수 없습니다. 가끔 그럴듯한 잘못된 이야기를 지어내기도 합니다. 이는 잘못된 내용이 사용자에게 전달될 수 있는 위험이 있습니다.

3. What are possible negative societal implications of text generation models?

텍스트 모델은 가끔 그럴듯한 잘못된 이야기를 지어내기도 합니다. 이는 잘못된 내용이 사용자에게 전달될 수 있는 위험이 있습니다.

4. In situations where a model might make mistakes, and those mistakes could be harmful, what is a good alternative to automating a process?

사람을 중간에 개입시킵니다. 기계가 잡아내지 못하는 잘못된 부분을 사람은 확인하고 수정할 수 있습니다. 예를 들어 CT 스캔을 통해 암 여부를 확인하는 경우를 말할 수 있습니다. 기계가 판독한 암 여부를 100% 확신할 수는 없습니다. 대신 암 여부를 기계가 빠르게 판독해주고, 전문가는 해당 결과를 직접 검토하여 속도와 정확도를 개선할 수 있습니다.

5. What kind of tabular data is deep learning particularly good at?

자연어 처리처럼 고차의 칼럼을 가진 테이블 데이터의 경우 유리합니다.

6. What’s a key downside of directly using a deep learning model for recommendation systems?

뻔한 추천이 이루어질 수 있습니다. 예를 들어 한 작가의 책을 다수 구매한 경우 해당 작가의 다른 작품을 추천해주는 것입니다.

7. What are the steps of the Drivetrain Approach?

Objective → Lever → Data → Models

목표을 우선 정합니다. 정한 목표를 달성하기 위한 Lever를 생각할 수 있습니다. Lever에 도달하기 위한 데이터를 수집하고, 모델을 구축하게 됩니다.

8. How do the steps of the Drivetrain Approach map to a recommendation system?

추천시스템은 사용자가 구매할만한 제품을 추천해주어 추가적인 수익을 얻는 것이 목표입니다. 이를 위한 Lever는 추천에 순위를 매기는 것입니다. 순위를 매기는 모델을 생성하기 위해서 고객과 아이템을 파악할 수 있는 다양한 데이터의 수집이 필요합니다.

9. Create an image recognition model using data you curate, and deploy it on the web.

직접 수행합니다.

10. What is DataLoaders?

DataLoaders는 훈련 데이터에 대한 사전 설정이 저장된 객체인 DataLoader가 1개 이상인 객체입니다.

11. What four things do we need to tell fastai to create DataLoaders?

blocks: 어떤 데이터로 구성되어 있는가

get_files: 어떻게 데이터를 불러올 것인가

get_y: 예측해야 하는 라벨은 무엇인가

splitter: 어떻게 데이터를 나눌 것인가

12. What does the splitter parameter to DataBlock do?

훈련용 데이터셋과 검증용 데이터셋을 분리합니다.

13. How do we ensure a random split always gives the same validation set?

seed를 부여합니다.

14. What letters are often used to signify the independent and dependent variables?

independent는 x, dependent는 y입니다.

15. What’s the difference between the crop, pad, and squish resize approaches? When might you choose one over the others?

crop은 사이즈로 자릅니다. pad는 흰색의 검은색의 픽셀을 채웁니다. squish는 가로 픽셀을 줄여 세로로 긴 모습으로 나타납니다. resize는 이미지의 사이즈를 바꿉니다.

16. What is data augmentation? Why is it needed?

data augmentation(데이터 증강)은 이미지에 변형을 주어 훈련에 사용하는 기법입니다. 모델은 보지 못한 데이터에 대해서는 예측을 어려워 합니다. 그래서 기본 이미지에 음영, 그라데이션을 추가하여 훈련에 사용합니다.

17. What is the difference between item_tfms and batch_tfms?

item_tfms는 아이템 별로 변환을 수행하는 것입니다. 예를 들어 Resize, RandomResizeCrop은 item_tfms에서 수행합니다. batch_tfms는 GPU 사용 단계에서 배치 단위로 수행됩니다.

18. What is a confusion matrix?

Confusion matrix는 분류 문제에서 실제와 예측의 True, False를 확인하는 모델 진단용 수단입니다.

19. What does export save?

export는 모델의 구조를 저장하여 다른 세션에서 바로 불러올 수 있게 합니다. export는 모델의 구조 뿐만 아니라 dataloaders의 형태도 저장합니다. 추론 시 새로운 데이터에 적용할 수 있기 때문입니다.

20. What is it called when we use a model for getting predictions, instead of training?

’추론(Inference)’이라고 말합니다.

21. What are IPython widgets?

IPython 위젯은 주피터 노트북 환경에서 파일 업로드, 사용자 상호작용 툴바를 사용할 수 있게 합니다.

22. When might you want to use CPU for deployment? When might GPU be better?

보통 CPU를 deployment로 사용하는 것이 일반적입니다. CPU가 대부분의 케이스에서 GPU보다 비용효율적이기 때문입니다. GPU는 대량의 데이터를 한번에 처리해야 할 때 유용합니다. 다만 모델 배포 시 GPU를 관리하는 것은 쉬운 일이 아닙니다.

23. What are the downsides of deploying your app to a server, instead of to a client (or edge) device such as a phone or PC?

앱을 서버에 배포하면 사용 시 민감한 데이터도 서버에 보내서 모델 결과를 받아야 합니다. 이는 보안에 문제가 될 수 있습니다.

24. What are three examples of problems that could occur when rolling out a bear warning system in practice?

out-of-domain 데이터가 들어올 수 있습니다. 예를 들어 밤에 찍힌 곰 사진은 잘 인식하지 못할 수 있습니다. 뒷모습에 대한 분류 예측도는 떨어질 수 있습니다. 또한 모델 수행 시간이 길수도 있습니다.

25. What is “out-of-domain data”?

out-of-domain data는 모델을 훈련할 때는 알 수 없었던 데이터를 의미합니다. 예를 들어 객체 인식 모델에서 물체의 낮 사진만 있다면, 밤에 찍힌 사진은 잘 구분하지 못합니다.

26. What is “domain shift”?

domain shift는 모델이 적용되는 영역에 데이터가 달라진 것을 의미합니다. 꾸준한 모델 갱신을 통해서 domain shift에 대처할 수 있어야 합니다. 대표적인 예시로는 보험 상품 관련 모델에서 보험사가 제공하는 약관이 이전에 비해 크게 바뀐 경우를 말할 수 있습니다.

27. What are the three steps in the deployment process?

과정을 처음부터 끝까지 수행해 봅니다. 결과를 면밀히 체크합니다. 해당 단계를 지나면 일부에만 모델을 적용하여 성능을 확인합니다. 그리고 수평적으로 확장해가며 모델 사용을 늘려갑니다.