패션 아이템을 자동으로 분류하는 인공 신경망 모델 생성
MNIST : 0 ~ 9 까지 손글씨 이미지의 데이터 셋
패션 MNIST : 패션 이미지 데이터 셋
테스트 데이터 셋의 크기 확인 및 이미지 확인
패션 아이템 별로 레이블이 정해져 있다.
로지스틱 회귀 모델로 패션 아이템 분류
전체 샘플의 수가 60000개를 이루어 한번에 학습하는 건 효율이 떨어짐
따라서 확률적 경사 하강법을 적용하여 학습 실시
SGDClassifier 에서는 샘플 단위를 정규화하는 작업이 필요
픽셀의 값은 0~255 사이의 정수로 이루어져 있어서, 255로 나누어 0 ~ 1 사이의 값을 정규화 진행
train_scaled.reshape(-1, 28*28) : 2차원 배열을 1차원 배열로 변환
784개의 픽셀로 이루어진 샘플 6만개를 확인
교차 검증 횟수를 늘리며 테스트 세트의 정확도를 확인
로지스틱 회귀의 공식
인공 신경망
텐서플로와 케라스
인공 신경망 모델 생성
밀집층 생성
케라스 모델의 훈련을 위한 설정, model 객체의 complier() 메서드에서 수행 필수
케라스 모델의 훈련을 위한 설정, model 객체의 complier() 메서드에서 수행 필수
loss
metrics
테스트 세트로 검증
은닉층 : 입력층과 출력층 사이에 있는 모든 층
은닉충에 적용하는 활성화 함수는 다양하다.(ex. 시그모이드 함수, 볼 렐루 함수 등)
출력층에 적용하는 함수는 제한적이다.(분류문제 : 시그모이드, 소프트맥스), 회귀문제에는 필요없음
은닉층에서 활성화 함수를 적용하는 이유 : 은닉층이 선형적 산술 계산만 수행하면 은닉층이 굳이 필요없음.
선형 계산을 비선형으로 변환해야 은닉층의 역할을 수행할 수 있음
시그모이드 함수와 소프트맥스 함수를 적용한 은닉층을 각각 생성
add() 메서드 전달
모델 학습 실시
Flatten메서드는 입력층과 은닉층 사이에 층처럼 존재하지만 데이터 배열에만 관여할 뿐
분석 결과에 영향을 주지 않기 때문에 층으로 간주하지 않는다.
전처리 중에 배열변환을 제외
optimizer='sgd'와 optimizer=sgd의 차이
'sgd'라 지정하면 자동으로 SGD 클래스 객체를 생성
네스테로프 모멘텀 최적화, 모멘텀 값은 0.9이상으로 지정한다.
네스테로프 모멘텀은 모멘텀 최적화를 2번 반복하여 구현하여 대부분 기본 확률적 경사 하강법 보다 나은 성능을 제공
적응적 학습률 : 모델이 최적점에 가까이 갈수록 학습률을 낮출 수 있는데 이를 통해 안정적인 최적점에 수렴할 가능성이 높다.
Adagrad 옵티마이저 사용
RMSprop 옵티마이저 사용
adam : RMSprop과 모멘텀 최적화의 장점을 결합
과대/과소 적합 여부를 확인
adam 옵티마이저를 적용하여 모델의 하이퍼 파라미터를 튜닝