[WIL] 20.08.2nd Week

우주먼지·2020년 8월 14일
0

TIL

목록 보기
23/28

딥러닝

텐서플로우 허브에서 좋은 데이터로 훈련되어 있는 모델을 가져와서 사용한다.(= 전이학습)

ImageNet

네트워크 구조를 경량화 하고 성능을 향상시킨 모델으로 모바일 환경에서도 사용가능하게 하였다.

전이학습 : 미리 훈련된 좋은 성능을 보이는 모델을 가져와서 일부분 혹은 전부를 사용하여 학습시키는 방법이다.

VGG, Inception, MobilNet등을 사용한다.

자연어 처리

문장을 입력받아서 문장을 출력하는 모델.

Seq2Seq

인코더에서 입력문자의 정보를 은닉/쉘 상태값으로 디코더에 전달해주어 디코더에서 출력 문장을 예측한다.

<순서도>
1. 데이터 불러오기
2. 불필요한 부분을 제거하고 각 리스트에 단어를 토큰화 해준다.
디코더의 인풋에는 <'start'>를 추가하고 디코더 아웃풋에서는 <'end'>를 추가한다.
3. 한글 혹은 영어 등 같은 특성의 문장끼리 정수 인코딩 후 패딩
4. 테스트, 트레인 셋을 나눠준다. ( 데이터 전처리 종료)
5. 입력레이어에서 패딩된 데이터의 길이를 명시하며 한글문장을 받고 Embedding레이어로
6. Embedding레이어에서는 패딩시 0이 생기는 것을 고려하여 단어 갯수 +1
7. 마스킹 레이어를 두어 0의 임베딩 벡터는 제외해준다.
8. LSTM레이어에서는 return_state를 통해 은닉/쉘 상태값을 전달해준다.(인코더 모델)
8-1. LSTM레이어서는 return_sequences를 통해 전체 시점의 상태값을 전달하도록 한다.(디코더 모델)
8-2. 디코더의 LSTM에서 나온 값을 softmax로 넘겨서 각 단어별로 다음 단어 확률 구하기.
9. 데이터를 이용하여 훈련진행.

<'prediction'>
예측의 경우 디코더의 입력값이 없으므로 각 단어별 LSTM이 아닌 LSTM을 하나만 사용하여 나온 상태값과 결과값을 이용하여 다음 단어를 예측한다.

  1. 인코더 모델을 설계하여 마지막 은닉/쉘 상태값을 디코더에 전달
  2. 전달받은 상태값과 <'start'>를 입력값으로 첫번째 단어 예측.
  3. 첫번째에서 나온 결과값과 상태값을 이용하여 다음 단어를 예측
  4. 3을 <'end'>가 나올때까지 반복.
  5. 예측이 끝나면 각 상태에서 나온 단어 확률 중 가장 높은 확률의 단어들을 묶어 문장으로 출력

머신러닝

앙상블 학습

여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법이다.

보팅 : 서로 다른 알고리즘을 합쳐서 사용하는 방법
ex) 하드보팅(결과값을 사용), 소프트 보팅(확률 결과값을 사용)
배깅 : 같은 알고리즘을 사용하고 데이터샘플링을 다르게 하여 학습을 진행
부스팅 : 동시 학습이 아닌 순차적으로 학습하는 방법이며 이전 학습내용을 토대로 다음 학습시 데이터에 가중치를 주어 학습을 진행
ex) GradientBoosting, AdaBoosting, XGBoost, LightGBM...

Random Forest

다수의 결정트리들을 임의적으로 학습하여 분류 또는 평균 예측을 하는 방법. 과적합이 잘 발생한다.

Extra Tree

최적의 임계값을 찾는 대신 후보 특성을 사용해 무작위로 분할한 다음 그 중 최상위 분할을 선택한다.

각각의 트리는 과적합이 심하지만, 결과값은 잘나온다.

SVM

2차원의 데이터들을 2차원에서 분류가 불가능할 때, 3차원으로 차원을 늘려서 분류를 진행.

  1. 세번째 특성을 추가하여 3차원으로 데이터셋을 확장하여 데이터를 분류한다.
  2. kernal값을 이용하여 선형이 아닌 곡선으로 데이터를 분류한다.
    gamma값 커지면 데이터를 타이트하게 감싸주고, 낮아지면 선형에 가까워진다.
profile
안녕하세요 ㅎㅎ

0개의 댓글