[토크ON세미나] 딥러닝 입문에서 활용까지 케라스(Keras) 1강 리뷰

choiyongheon·2022년 1월 27일
1

졸작을 위해 필요한 과정 중 하나인 케라스 공부를 위해서 T아카데미에서 업로드 한 김태영 님의 강의 내용을 가지고 공부를 시작했다. 1강씩 수강한 후 리뷰를 올릴 예정이다.

1. 딥러닝과 케라스

딥러닝의 분류

딥러닝은 크게 지도, 비지도, 강화학습으로 나뉜다.
1. 지도 = 라벨링을 한 뒤 학습
2. 비지도 = 라벨링을 하지 않고 학습
3. 강화 = 주어진 상태에 맞게 학습 -> 보상을 최대로 한다.(개인적으로 그리디 알고리즘과 비슷한 것 같다..)

케라스(keras)란?

케라스는 엔진이 아닌 인터페이스이다. 간단히 말하면,
엔진 = 학습과 rate 변환 등 실질적인 학습 행위를 담당
인터페이스 = 엔진 위의 api로, 엔진을 조종하는 역할 담당

또한 딥러닝은 이제 연구,개발의 수준을 넘어서 실생활에 활용하는 단계이다. 예를 들어, tensorflow.js는 웹 브라우져에서 영상처리를 행하므로 서버 자원을 소모하지 않는다.

엔진에 따른 취업률은 텐서플로우-케라스-파이토치 순이다. 또한, 논문 수는 텐서플로우-파이토치-케라스 순이므로, 이 분야를 깊게 알기위해서는 위의 세 개는 필수적으로 활용할 줄 알아야한다.

2. 딥러닝 기초

수식

기초적인 수식은 y=wx+by = wx+b 이며, y는 출력, x는 정답으로 두 요소를 충분히 가지고 있다면 w,b는 알아서 계산해준다 보면 된다.

모델

사람도 머리,몸통,하반신으로 나눌 수 있듯이 모델도 network, objective function(목표함수), optimizer(최적화) 로 나눌 수 있다. 그 다음 세 요소를 합치는 과정을 compile이라 한다. 이 때 compile을 한다는 것은 network가 학습 준비를 마쳤다는 뜻이다.

objective function

위의 세 과정 중에서 가장 중요한 것은 objective function이다. 사용자의 목표에 따라 값이 달라지기 때문이다. 또한 이 강의에서 나오지는 않았지만, 딥러닝에서 최적 값을 찾기 위해서는 loss function을 최대한 줄여야 하기 때문에 objective function을 지정하는 것이 상당히 중요하다. 즉, 우리가 원하는 값과 가장 연관되어 있다는 것이다.
강의에서 중요하게 다루는 것은 아래의 초록글씨이다.

mean_squared는 수치예측, categorical_crossentropy는 다중 분류, binary_crossentropy는 이진 분류에 사용된다.

시그모이드(sigmod) 함수

시그모이드 함수는 계단함수의 진화버젼이다. 계단함수가 0과 1값만을 출력할 수 있지만, 시그모이드 함수는 expotiential 값을 계산하기 때문에, 0~1 사이의 연속적인 실수값을 출력할 수 있다. 그래프를 보더라도 시그모이드가 훨씬 매끄럽다는 것을 알 수 있다.

3. 마무리

모델 구성하기

아래의 모델은 2층 layer로 되어있으며 network의 종류는 Dense이다.
또한 경사함수인 relu를 사용하며, 다중분류 함수인 softmax를 사용한다.

모델 컴파일

loss(objective function)는 categorical_crossentropy, optimizer는 adam으로 구성하며 metrics를 통해 정확도를 출력한다.

profile
주니어 백엔드 개발자

0개의 댓글