첫 번째 에포크부터 10번째 에포크로 갈수록 오차값(loss)이 줄어드는 모습을 볼 수 있습니다. 정확도(accuracy) 또한 지속적으로 증가하는 것을 볼 수 있습니다.
■ model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
케라스는 심층 신경망의 학습하는 방법을 정하는 명령어를 제공합니다. 그 명령어는 바로 compile 함수입니다. 이 함수를 사용하기 위해서는 몇 가지 규칙이 있습니다. 첫 번째로는 오차값을 계산하는 방법을 알려줘야 합니다. 이 인공지능은 이미지를 10개 중 하나로 분류해야 하므로 다중 분류 문제에 해당합니다. 그렇기 때문에 categorical_crossentropy 방법을 사용하면 됩니다.
두 번째로는 오차를 줄이는 방법을 알려줘야 합니다. 오차를 줄이기 위해 옵티마이저(optimizer)를 사용하면 됩니다. 옵티마이저에는 다양한 방법이 있지만 여기에서는 adam이라는 방법을 사용합니다.
잠깐만요
옵티마이저란 무엇인가요?
딥러닝을 통해 인공지능 모델을 학습시킬 때 발생하는 오차를 줄이기 위해 경사 하강법이라는 알고리즘을 사용합니다. 이때 경사 하강법을 어떠한 방식으로 사용할지 다양한 알고리즘이 있는데 그러한 알고리즘들을 케라스에서 모아 놓은 것이 바로 옵티마이저 라이브러리입니다. 옵티마이저의 종류에는 아담(adam)뿐만 아니라 확률적 경사 하강법(SGD) 등이 있습니다.