Skip to content

Commit

Permalink
edit ch16
Browse files Browse the repository at this point in the history
  • Loading branch information
SDSTony committed May 9, 2021
1 parent 585b4ac commit ecc4c3f
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions course-website/lectures/16-data-augmentation.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# 16. Data Augmentation

Data augmentation은 기존 데이터에 일정 변환을 가해서 학습/예측을 위한 데이터 양을 늘리는 기법입니다. 일반적으로 이미지 데이터에 사용하는 방법입니다. 예를 들어 그림 16-1 처럼 앵무새 사진이 있을 때 사진을 오른쪽으로 뒤집거나 확대하거나 필터를 추가해서 여러 장의 이미지를 생성하는 방법을 data augmentation이라고 합니다.
Data augmentation은 기존 데이터에 일정 변환을 가해서 학습/예측을 위한 데이터 양을 늘리는 기법입니다. 일반적으로 이미지 데이터에 사용하는 방법입니다. 예를 들어 그림 16-1처럼 앵무새 사진이 있을 때 사진을 오른쪽으로 뒤집거나 확대하거나 필터를 추가해서 여러 장의 이미지를 생성하는 방법을 data augmentation이라고 합니다.

그림 16-1
![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img01.jpg?raw=true)
- 그림 16-1 augmentation 활용 예제([출처](https://docs.google.com/presentation/d/1QnuQjWiF_1q7XFLMzie3RPE0Hq9DCwtoQ8kc1ohZw_4/edit?usp=sharing))

이미지를 회전하거나 확대 하거나 축소하는 것 외에도 여러개의 이미지를 결합하는 방식의 data augmentation이 존재합니다. Mixup은 서로 다른 이미지를 투명도를 조정후 겹쳐서 하나의 이미지를 생성하는 것이며 Cutout은 이미지의 일정 부분을 삭제하는 방법입니다. CutMix는 서로 다른 이미지의 일부를 자른 뒤 합쳐서 하나의 이미지를 생성하는 방법입니다.

- 그림 16-2 Mixup, Cutout, CutMix 예시
![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img02.jpg?raw=true)
- 그림 16-2 Mixup, Cutout, CutMix 예제([출처](https://arxiv.org/pdf/1905.04899.pdf))

모델 학습시 데이터의 양이 부족할 때 data augmentation을 통해 데이터의 양을 부풀려서 학습이 더 잘되게 할 수 있습니다. 뿐만 아니라 예측 시에도 data augmentation을 적용해서 여러 개의 이미지에 대해 예측한 후 평균을 구해서 최종 예측값을 산출 할 수 있습니다. 예측 시에 data augmentation을 적용하는 과정을 Test time augmentation(TTA)라고 합니다. TTA는 컴퓨터비전 데이터과학 대회에서 일반적으로 사용하는 방법입니다.

Expand All @@ -18,25 +20,32 @@ Data augmentation은 기존 데이터에 일정 변환을 가해서 학습/예

Text augmentation은 문자열 데이터에 augmentation을 적용하는 방법입니다. Back translation 방법, Easy data augmentation 방법, 그리고 sentence-level transformation 방법이 존재합니다.

Back translation은 원문 텍스트를 다른 언어로 번역하고 다시 원문으로 번역해서 얻은 데이터를 추가로 사용하는 방법입니다. 예를 들어 영문 데이터를 불어로 번역한 후 다시 영문으로 번역해 추가 데이터로 사용하는 것입니다. 번역을 여러번 거치면서 같은 의미지만 달라진 부분이 있을 수 있기 때문에 이와 같은 방법을 사용해 데이터의 양을 부풀립니다.
Back translation은 원문 텍스트를 다른 언어로 번역하고 다시 원문으로 번역해서 얻은 데이터를 추가로 사용하는 방법입니다. 예를 들어 영문 데이터를 불어로 번역한 후 다시 영문으로 번역해 추가 데이터로 사용하는 것입니다. 번역을 여러번 거치면서 같은 의미지만 달라진 단어가 있을 수 있기 때문에 이와 같은 방법을 사용해 데이터의 양을 부풀립니다.

Easy Data Augmentation은 synonym replacement, random insertion, random swap, 그리고 random deletion 방법이 존재합니다. Synonym replacement는 유사어로 단어를 변환하는 방법입니다.
Easy Data Augmentation은 synonym replacement, random insertion, random swap, 그리고 random deletion 방법이 존재합니다.

- 그림 16-X 원문
![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img03.jpg?raw=true)
- 그림 16-3 예시 문장([출처](https://docs.google.com/presentation/d/1QnuQjWiF_1q7XFLMzie3RPE0Hq9DCwtoQ8kc1ohZw_4/edit?usp=sharing))

- 그림 16-X Synonym Replacement 적용 예시
Synonym replacement는 유사어로 단어를 변환하는 방법입니다. 그림 16-3에 있던 `article``techiniques`가 그림 16-4에서 각각 `write-up``methods`로 변경됐습니다.

![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img04.jpg?raw=true)
- 그림 16-4 Synonym Replacement 적용 예시([출처](https://docs.google.com/presentation/d/1QnuQjWiF_1q7XFLMzie3RPE0Hq9DCwtoQ8kc1ohZw_4/edit?usp=sharing))

Random Insertion은 유사어를 문장내 랜덤한 위치에 삽입하는 방법입니다. 문장이 문법적으로 올바르지 않게 변하지만 머신러닝 모델의 성능을 높여주기도 합니다.

- 그림 16-X Random Insertion 적용 예시
![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img05.jpg?raw=true)
- 그림 16-5 Random Insertion 적용 예시([출처](https://docs.google.com/presentation/d/1QnuQjWiF_1q7XFLMzie3RPE0Hq9DCwtoQ8kc1ohZw_4/edit?usp=sharing))

Random Swap은 무작위로 단어의 위치를 바꾸는 방법 입니다.

- 그림 16-X Random Swap 적용 예시
![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img06.jpg?raw=true)
- 그림 16-6 Random Swap 적용 예시([출처](https://docs.google.com/presentation/d/1QnuQjWiF_1q7XFLMzie3RPE0Hq9DCwtoQ8kc1ohZw_4/edit?usp=sharing))

Random Swap은 무작위로 단어를 삭제하는 방법입니다.
Random Deletion은 무작위로 단어를 삭제하는 방법입니다.

- 그림 16-X Random Deletion 적용 예시
![](https://github.com/kaggler-tv/dku-kaggle-class/blob/master/course-website/imgs/ch16-img07.jpg?raw=true)
- 그림 16-7 Random Deletion 적용 예시([출처](https://docs.google.com/presentation/d/1QnuQjWiF_1q7XFLMzie3RPE0Hq9DCwtoQ8kc1ohZw_4/edit?usp=sharing))

Sentence-level transformation은 문장 단위로 실시하는 augmentation 기법입니다. Shuffle Sentences와 Exclude Duplicate방법이 존재합니다. Shuffle Sentences는 문단 내의 문장들의 순서를 바꾸는 방법입니다. Exclude Duplicate는 문단 내의 중복 문장을 제거하는 방법입니다.

Expand Down

0 comments on commit ecc4c3f

Please sign in to comment.