CS
인공지능(2)
인지 기말
Chap8. Deep neural network
- dnn은 mlp에서 은닉층의 개수를 증가시킨 것
- 특징 추출하고 분류하는 형식(뒤쪽으로 갈수록 고급 특징 추출)
- gradient소실 문제 : 신경망이 너무 깊어 gradient가 0에 가까워지는 현상
- 시그모이드 활성화 함수를 쓰면, 수의 크기가 큰 경우 기울기가 0이되기에 그럼
- ReLU사용
- cross entropy 손실 함수 계산
- Binary Cross Entropy : 분류를 2개로만 하는 경우에 사용
- Categorical Crossentropy : 분류를 두개이상으로 해야하는 경우 사용
- SparseCategoricalCrossentropy : 정답레이블이 one hot encoding이 아니고 정수로 주어질 때 사용
- 가중치 초기값이 0이면 역전파가 안되고 너무 같은 가중치를 주면 또 똑같은일만 하게되고 너무 크면 발산하게됨
- xavier,he방법 등으로 작은 난수 가중치로 초기화하는 것이 좋다.
- 범주형 데이터(남자여자 ..) 처리 방법
- integer encoding : 각 레이블이 정수로 매핑
- one hot encoding : 각 레이블이 이진 벡터에 매핑(ex, 코리아면 korea칸만 1나머지 china,japan은 0으로 매핑)
- embedding : 범주의 분산된 표현을 학습
- 데이터도 -1~1정도의 값만 가지는게 좋음 →정규화 필요(Normalizaion()추가하면 됨)
- 과잉 적합(검증 데이터의 손실값이 오히려 증가하는 경우) 방지 전략
- 조기 종료 : 검증 손실 증가하면 종료
- 가중치 규제 : 가중치 값 제한
- 데이터 증강 : 데이터 추가
- Dropout : 몇개의 뉴련을 쉬게함
- 앙상블 : 동일 딥러닝 신경망을 여러개 만들어서 학습시킨 후 마지막에 합침
Chap9. Convolutional Neural Network
- 상위 레이어의 노드들과 하위레이어의 노드들이 부분적으로만 연결되어 있음
- 이미지 처리에 적합
- 주변 화소값에 가중치를 곱해서 더한 것을 새로운 화소값으로 하는 연산
- 복잡도 낮아지고 과대 적합에 빠지지 않음
- Stride : 필터를 적용하는 거리, 1이면 한칸식 2면 두칸씩
- Padding : 가장자리 처리를 위한 기법
- Valid : 가장자리를 처리하지 않는 것
- same : 0이나 뭐 인접 픽셀값으로 채우는 것
- Pooling : 입력 데이터의 크기를 줄이는 것
- max pooling : 윈도우(2X2필터)마다 최대 값만 출력으로 넘기는 것
- 물체의 이동에 대해 둔감하게 함
Chap 10. 영상 인식
- CNN사용해서 이미지 처리하는거랑 비슷
- data augmentation : 데이터 증가시키는거임 하나사진을 확대, 회전 등등해서
- 전이학습 : 하나의 문제에 대해 학습한 신경망의 모델과 가중치를 다른 문제에 적용하는 것
Chap 11. RNN
- 순차 데이터 : 순서가 있는 데이터 (주식 가격, 오디오 데이터 등등)
- 순환 신경망을 이용해서 순차 데이터를 처리
- 가변길이의 input을 처리해야 하고, 장기 의존성을 추적할수 있어야 하고, 순서에대한 정보를 유지해야 하고, sequence전체의 파라미터를 공유할 수 있어야 함
- 순환 데이터(순차 데이터)를 윈도우크기만큼 잘라서 입력으로 쓰고 그다음 애를 정답으로 씀, 즉 샘플 크기가 3이고 데이터가 1000개라면 입력이 (1,1,1) 정답이 1 뭐 이런식으로 계속해서 연속적으로 잘라 나가는 거임
- 주로 tanh를 활성화 함수로 사용
- 유형
- 다대다 : 많은 수의 input 출력도 많이
- 다대일 : 많은 input 하나의 출력
- 일대다: 하나의 input, 많은 출력
- RNN에서는 시간을 거슬러 올라가면서 gradient를 역전파함 이를, BPTT라고 함
- gradient소실 문제가 발생 → 활성화 함수 ReLU사용
- LSTM,GRU같은 Gated cell사용하는 것도 방법
- 초반의 input값은 뒤로 갈수록 점점 손실되고 이걸 기억못하면 제대로 예측하지 못함, 이걸 장기 의존성 문제 라고 함
- (LSTM은 심심하면 보셈)
Chap12. NLP (자연어 처리)
- 텍스트 전처리
- 자연어 처리의 첫단계
- 텍스트를 받아 토큰으로 분리하는 작업
- this is sparta를 this,is,sparta이렇게 나누는 것
- 소문자로 통합하기, 근데 US,us처럼 다른 의미를 가지는 건 구분해야 함
- 구두점 쉼표,느낌표 등등 제거
- 불용어(관사,전치사 등등 자주 보이지만 큰 의미는 없는 말들) 제거
- 단어의 표현
- 정수 인코딩(단어마다 숫자를 부여→단어간의 관계 표현못하고 0~1사이의 입력을 주지 못함), one hot encoding(얘는 sparse하기에 비효율적임, 그리고 얘도 단어간의 관계(유사도)를 나타내지 못함), word embedding이 있는데 워드 임베딩 사용
- Word embedding : 하나의 단어를 밀집 벡터로 표현하는 방법
- Word2vec : 텍스트를 받아서 벡터 매트릭스로 표현함
- CBOW : 주변에 있는 단어로 중간의 단어를 예측
- skipgram : 중간에 있는 단어로 주변의 단어를 예측
- 샘플에 0을 넣어 단어끼리의 길이를 맞춰줌
Chap14. Generative model
- 생성모델(generative model)은 훈련 데이터의 규칙성,패턴을 자동으로 발견하고 학습해서 새로운 샘플을 생성하는 신경망
- 고정된 계산보다는 확률적인 계산이어야 함, 랜덤 노이즈를 준다
- Autoencode : 입력과 동일한 출력을 만드는 것을 목적으로 하는 신경망
- 특징 학습, 차원 축소, 표현 학습 등에 쓰임
- encoder : 입력을 잠재표현(압축된 표현)으로 인코딩
- decoder : 잠재표현을 풀어 입력으로 복원
- 손실함수는 MSE사용
- 노이즈 제거하는 용도로도 쓰임
- GAN(generative adversarial network) : generator신경망과 discriminator신경망이 서로 적대적으로 경쟁하는 네트워크
- generator : 가짜 데이터를 생성하는 것을 학습
- discriminator : 생성자가 만든 가짜 데이터를 진짜 데이터와 구분하는 방법을 학습
- 처음 제너레이터는 그냥 노이즈만 출력하는데 학습하면서 점점 진짜 데이터와 유사한 값을 만들어냄