220906

AIVILLAIN·2022년 9월 6일
0

오공완

목록 보기
2/25

Keras

Tensorflow, Theano, CNTK를 백엔드 엔진으로 사용 가능

모델 정의 방법

Sequential 클래스 or 함수형 API
모델 구조 정의 이후에는 동일
컴파일 단계에서 학습 과정 설정

이진 분류 예제

깃허브 코드 링크
같은 데이터에서 머신 러닝 모델을 훈련하고 테스트해서는 안됨 (train_data, test_data)
신경망에 숫자 리스트 주입 불가
리스트를 텐서로 바꾸는 두가지 방법

  • 같은 길이가 되도록 리스트에 패딩을 추가, (samples, sequence_length) 크기의 정수 텐서로 변환, 이 정수 텐서를 다룰 수 있는 층을 신경망의 첫 번째 층으로 사용 (Embedding)
  • 리스트를 원-핫 인코딩하여 0, 1의 벡터로 변환하여 Dense층을 첫 번째 층으로 사용

입력 데이터는 벡터, 레이블은 스칼라
relu 활성화 함수를 사용한 완전 연결 층을 그냥 쌓은 네트워크가 가장 잘 작동
Dense 층에 전달할 매개변수는 은닉 유닛의 수
하나의 은닉 유닛은 층이 나타내는 표현 공간에서 하나의 차원이 됨
표현 공간의 차원은 신경망이 내재된 표현을 학습할 때 가질 수 있는 자유도로 이해할 수 있음
은닉 유닛을 늘리면 신경망이 더욱 복잡한 표현을 학습할 수 있지만 계산 비용이 커지고 원하지 않는 패턴을 학습할 수 있음 (과적합)

Dense 층을 쌓을 때
얼마나 많은 층을 사용할 것인지, 각 층에 얼만큼 유닛을 둘 것인지 고민

레이블을 벡터로 변환하는 방법
1. 원-핫 인코딩 (범주형)
손실함수 = categorical_crossentropy
2. 정수 텐서로 변환
손실함수 = sparse_categorical_crossentropy
두 손실 함수는 인터페이스만 다를 뿐 수학적으로는 동일하게 계산

훈련 과정에서 검증을 위해 검증 세트 필요
원본 훈련 데이터에서 10,000개의 샘플을 검증 세트로 사용

딥러닝 네트워크에서는 노드에 들어오는 값들을 곧바로 다음 레이어로 전달하지 않고, 주로 비선형 함수를 통과시켜 전달한다.
이때 사용하는 함수를 활성화 함수(Activation Function)라고 부른다.
여기서 주로 비선형 함수를 사용하는 이유는, 선형함수를 사용할 시 층을 깊게 하는 의미가 줄어들기 때문이다.

model.fit() 메서드는 history 객체 반환
이 객체는 훈련 시 발생한 모든 정보를 담고 있는 history 딕셔너리를 가짐

훈련 데이터의 정확도는 계속 증가하지만, 검증 데이터에 대한 정확도는 증가하지 않음
훈련 데이터에 과도하게 최적화되고 일반화돠지 못함

상이한 스케일을 가진 값을 신경망에 주입하면 문제가 됨
특성 별로 정규화 하는 것이 도움이 됨
테스트 데이터를 정규화할 때 사용한 값은 훈련 데이터에서 계산한 값
※ 절대 테스트 데이터에서 계산한 어떤 값도 사용하면 안됨

데이터가 적을 경우 검증 세트와 훈련 세트로 어떤 데이터가 선택되었는지에 따라 검증 점수가 크게 달라짐. (검증 세트의 분할에 대한 검증 점수의 분산이 높음)
이런 경우 신뢰 있는 모델 평가 어려움
교차 검증 사용하는 것이 좋음
K fold cross validation
데이터를 K개의 분할로 나누고 K개의 모델을 만들어 K-1개의 분할에서 훈련, 나머지 분할에서 평가

상대적으로 가용한 훈련 데이터가 적다면 과대적합을 피하기 위해 은닉 층의 수를 줄인 모델이 좋음
입력 데이터의 특성이 서로 다른 범위를 가지면 전처리 단계에서 각 특성을 개별적으로 스케일 조정 할 필요가 있음

지도학습 (Supervised Learning)

주어진 타깃(해답)에 입력 데이터를 매핑
거의 대부분 분류, 회귀 문제
시퀀스 생성 (sequence generation)
구문 트리 예측 (syntax tree prediction)
물체 감지 (object detection)
이미지 분할 (image segmentation) 등

비지도학습 (Unsupervised Learning)

주어진 타깃 없이 입력 데이터에 대한 흥미로운 변환을 찾음
지도 학습 문제를 풀기 전 데이터셋을 잘 이해하기 위한 단계
차원 축소, 군집(Clustering) 등

자기 지도 학습 (Self-supervised Learning)

지도 학습의 특별한 경우
타깃에 해당하는 레이블경험적인 알고리즘(heuristic algorithm)을 사용하여 입력 데이터로부터 생성
오토인코더 등
지도 학습, 자기 지도 학습, 비지도 학습의 구분은 가끔 모호할 수 있음
(명확한 경계 없이 연속적)

강화 학습

에이전트가 환경에 대한 정보를 받아 보상을 최대화하는 방향으로 행동하도록 학습

분류, 회귀 사용 용어

샘플, 입력 (sample, input) : 모델에 주입될 데이터 포인트
예측, 출력 (predict, output) : 모델에 데이터를 입력했을 대 나오는 값 (예측값)
타깃 (target) : 외부 데이터 소스에 근거하여 모델이 완벽하게 예측해야 하는 값 (정답)
예측 오차, 손실 (loss) : 모델의 예측 값과 타깃 사이의 차이(거리)
클래스 (class) : 분류 문제에서 선택 가능한 레이블의 집합
레이블 (label) : 클래스 할당의 구체적인 사례
참 값, 꼬리표 : 데이터셋에 대한 모든 타깃
배치 (batch) : 모델에 의해 동시에 처리되는 소량의 샘플 묶음, 학습 시 배치 마다 한 번씩 모델의 가중치에 적용할 값 계산

profile
소신있는 오픈마인드

0개의 댓글