데이터의 성능을 높이는 방법
글 작성자: _rian
데이터의 성능을 높이는 방법
Augmentation
- Data Preprocessing & Augmentation
- 원래의 데이터를 부풀려서 성능을 더 좋게 한다.
- 원본에 추가되는 개념이니 성능이 떨어지지 않는다. 쉽고 패턴이 정해져 있다.
- 좌우반전, 이미지 잘라주기, 밝기조절 등이 있다.
- 사용 예시
- AlexNet
- 여기서 처음으로 Augmentation을 Heavy하게 썼다고 한다.
- 좌우 반전
- 224*224px의 이미지를 → 256*256px로 resize 한 다음 → 224*224px로 랜덤하게 2048번 잘라서 데이터를 2048배 늘림
- 테스트시에는 2048배 늘이면 너무 느리니까
256_256px로 resize한 다음 → 좌상단/우상단/좌하단/우하단/가운데 5번만 잘라서 5배 늘림 → 좌우반전까지 *_총 10배 늘림** → 10개 따로 predict 한 다음, 평균을 낸다. - PCA를 통해 RGB채널을 조절해주었다. (요즘엔 잘 안쓰는 방식)
- VGGNet
- 사진 데이터에서 가장 많이 사용하는 방식.
- RGB값을 각각 빼서 RGB 값의 평균을 0으로 만든다. → Loss 수렴이 빨라진다.
- weight를 초기화할 때도 E(X)와 E(Y)=0에서 시작한 이유가 loss 수렴이 좋아져서였다.
- X와 Y는 모두 activation output이었다. Hidden layer 사이의 input과 ouput의 평균이 0인 것만 유지하도록 해주면 Layer를 더 쌓을 수 있는 개념이었다.
- 처음 이미지를 넣는 Input은 세로, 가로, RGB 값은 activation output이 아니므로 강제로 RGB값을 평균에서 빼주면, 사실상 input값의 평균이 0이 되어서 수렴이 빨라진다.
- 같은 이미지를 256_256px, 384_384px, 512*512px 3가지 버전으로 만든 뒤, → 224*224px로 랜덤 crop 한다.
- 256_256px에서 224_224px로 Crop하면 대부분의 이미지가 들어간다. 하지만 512_512px에서 224_224px은 이미지의 1/4 정도밖에 안들어간다. 고양이로 치면 고양이 한마리 전체가 들어갈 일은 거의 없다. 즉, 고양이의 귀, 꼬리, 털 등등이 짤려서 들어간다.
- 사람처럼 일부만 보고도 고양이로 인식하도록 train 되는 효과가 난다.
- 테스트시에는 마찬가지로 하는 것이 가장 error가 낮았다.
- RGB값을 각각 빼서 RGB 값의 평균을 0으로 만든다. → Loss 수렴이 빨라진다.
- 결과적으로 이러한 방식으로 전처리를 하면 error가 10.4% → 7.1%로 줄어들었다고 한다.
- Multi-crop : Alexnet에서 했던, 좌상단~가운데 5개 크롭 + 좌우반전 2개 → 10배 늘리는 방법
- Dense : (1, 1) Conv layer처럼, Fully-connected layer를 바꿔주면 test할 때 이미지를 더 크게 넣어줄 수 있다. 크게 넣어주면 (1, 1)으로 나오던 결과가 (2, 2)로 나오는데, 그 결과값은 5군데 crop하는 것과 동일하고, 그것을 평균 내준다.
- VGGNet에서는 Multi-Crop과 Dense를 따로 써주면 선응이 좋아지지만 결과는 거의 비슷하고, 같이 써주면 성능이 더 좋아졌다. 굳이 따지면 실행속도가 빠른 Dense를 쓰는 것을 권장했지만, 결국에는 같이 쓰는 것을 택했다.
- 여기서 처음으로 Augmentation을 Heavy하게 썼다고 한다.
- AlexNet
Validation Data
- Training Data에 일부분을 Validation data로 두는 것.
- Overfitting을 방지에 유용하다
'머신러닝 꿈나무' 카테고리의 다른 글
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 1주차 (0) | 2024.01.05 |
---|---|
[Python 데이터 분석 3대장] Numpy 라이브러리 (0) | 2020.08.04 |
[Python 데이터 분석 3대장] 판다스(Pandas) (0) | 2020.01.13 |
하둡 에코시스템(Hadoop-Ecosystem)이란 (0) | 2019.11.10 |
하둡(Hadoop)이란? (0) | 2019.11.10 |
댓글
이 글 공유하기
다른 글
-
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 1주차
[혼공머신] 혼자 공부하는 머신러닝 & 딥러닝 1주차
2024.01.05Chapter 1. 나의 첫 머신러닝 머신러닝 : 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 찾아내는 알고리즘을 연구하는 분야 딥러닝 : 인공신경망을 기반으로 한 방법들을 통칭 첫번째 머신러닝 프로그램 : K-Nearest Neighbors 알고리즘으로 도미, 빙어 두 생선을 분류하기 Chapter 2. 데이터 다루기 2-1. 훈련 세트와 테스트 세트 지도학습과 비지도 학습 지도학습 : 데이터와 "정답"이 있는 경우 훈련 세트와 테스트 세트 훈련 세트 : 모델 훈련에 사용되는 데이터 테스트 세트 : 평가에 사용되는 데이터 샘플링편향 훈련 세트와 테스트 세트에 샘플이 골고루 섞여있지 않고 한쪽으로 치우친 경우 2-2. 데이터 전처리 훈련 세트와 테스트 세트로 나누기 사이킷런의 train… -
[Python 데이터 분석 3대장] Numpy 라이브러리
[Python 데이터 분석 3대장] Numpy 라이브러리
2020.08.04이전 포스팅 : Pandas 2020/01/13 - [Computer Engineering] - [python] 판다스(Pandas) Numpy 소개 Numpy ; Numerical Python 고성능 과학계산 컴퓨팅과 데이터 분석에 필요한 파이썬 패키지입니다. Numpy의 몇가지 장점을 소개하자면, 빠르고 메모리를 효율적으로 사용하여 벡터의 산술연산과 브로드캐스팅 연산을 지원하는 다차원 배열 ndarray 데이터 타입을 지원한다. 반복문을 작성할 필요 없이 전체 데이터 배열에 대해 빠른 연산을 제공하는 다양한 표준 수학 함수를 제공한다. 배열 데이터를 디스크에 쓰거나 읽을 수 있다. (즉, 파일로 저장) 선형대수, 난수발생기, 푸리에 변환 가능, C/C++ 포트란으로 쓰여진 코드를 통ㅇ합한다. 따라하며… -
[Python 데이터 분석 3대장] 판다스(Pandas)
[Python 데이터 분석 3대장] 판다스(Pandas)
2020.01.13판다스(Pandas), 넘파이(Numpy), 맷폴롭립(Matplotlib) - 데이터 처리 삼대장 1. 판다스 (Pandas) 판다스는 파이썬 데이터 처리를 위한 라이브러리다. 파이썬을 이용한 데이터 분석에서는 필수 라이브러리! 아나콘다를 설치했다면 기본으로 깔려있겠지만, 설치하지 않았다면 아래 커맨드로 Pandas를 설치할 수 있다. pip install pandas 판다스의 경우, 주로 pd라는 명칭으로 임포트 하는 것이 관례이다. import pandas as pd 이하 아래에서 수행되는 모든 pandas 코드들은 위의 임포트 코드를 우선 수행했다고 가정한다. Pandas는 총 세가지의 데이터 구조를 사용한다. 시리즈 (Series) 데이터프레임 (DataFrame) 패널(Panel) 이 중 데이터… -
하둡 에코시스템(Hadoop-Ecosystem)이란
하둡 에코시스템(Hadoop-Ecosystem)이란
2019.11.10이전 포스팅 2019/11/10 - [빅데이터 꿈나무] - 하둡(Hadoop)이란? 시작하기 앞서… (내가 했던 그리고 쉽게들 하는) 하둡에 대한 오해 1. 하둡은 빅데이터에만 사용된다? 많은 사람들은 하둡이라고 하면 방대한 양의 빅데이터부터 연상을 한다. 물론 나름대로 합당한 이유가 있긴 하다. 그러나 하둡의 활용은 빅데이터를 훨씬 넘어선다. 하둡의 가장 강력한 능력 가운데 하나는 바로 확장성이다. 이를 바탕으로 페이스북과의 관계를 유지하고 있을 뿐 아니라 얼마든지 규모를 축소시켜 저렴한 저장소와 데이터 관리를 원하는 기업들에게도 맞출 수 있다. 2. 하둡은 NoSQL 툴이다? 하둡이 비관계형 DBMS(NDBMS)에 속하는 것은 맞지만, 그렇다고 SQL 쿼리 언어를 사용하지 못하는 것은 아니다. 사실…
댓글을 사용할 수 없습니다.