TensorFlow

Tensorflow, 케라스 (Keras) 이건 또 뭐니?

LEEHANDS 2022. 2. 10. 16:04
반응형

 

케라스(Keras)는

파이썬으로 작성된 오픈 소스 신경망 라이브러리이다.

MXNet, Deeplearning4j, 텐서플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있다.

딥 신경망과의 빠른 실험을 가능케 하도록 설계되었으며 최소한의 모듈 방식의 확장 가능성에 초점을 둔다. ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트의 연구적 노력의 일환으로 개발되었으며 주 개발자이자 유지보수자는 구글의 엔지니어 프랑소아 숄레(Francois Chollet)이다.

2017년, 구글의 텐서플로(Tensorflow) 팀은 텐서플로의 코어 라이브러리에 케라스를 지원하기로 결정하였다.

Chollet는 케라스가 단대단(end-to-end) 기계 학습 프레임워크가 아닌 인터페이스의 역할을 염두에 두었다.

더 높은 수준의 더 직관적인 추상화 집합을 표현함으로써 백엔드 과학 컴퓨팅 라이브러리임에도 불구하고 신경망을 구성하기 쉽게 만들어준다.

마이크로소프트 또한 CNTK 백엔드를 케라스에 추가하는 작업을 수행하고 있으며 기능은 현재 CNTK 2.0과 더불어 베타 릴리스 단계에 있다

 


우선 케라스는 텐서플로우를 기반으로 사용하기 쉽도록 만들어진 일종의 인터페이스라고 한다. 그리고 텐서플로우2.0 에서는 공식적으로 케라스를 하이레벨API로 지정하였다.

 

조금 시간이 지난 자료이긴 하지만 케라스에 대한 학습 영상을 보다 딥러닝에 대한 기초적인 개념을 쉽게 해석해준 내용을 보았다. 오래 기억하기 위해 용어를 정리해 본다.

사람이 학습을 하듯이 인공지능이 학습해 가는 과정을 사람 모양의 레고를 이용해 설명해 준다. 이렇게 비교해 주니 훨씬 더 이해가 쉽다는 느낌이 들어 해당 그림을 옮겨 왔다.

 

사람 모양의 레고는 머리와 상반신 그리고 하반신으로 구성된다. 이렇게 구분해서 비교하는 이유는 딥러닝에서 역할을 구분해 설명할 필요가 있기 때문이다.

머신러닝이나 딥러닝을 개발 한다는 것은 그 목적에 맞는 모델을 만드는 과정이다.

이 모델이 사람 모양의 레고라고 가정 한다면 모델의 머리에 해당하는 네트워크, 상반신에 해당하는 목표함수, 하반신에 해당하는 최적화기로 구성된다.

 

모델(Model)

학습을 하기위해서 모델이 필요하다.

아래는 케라스에서 모델을 생성하는 방법이다.

from keras.models import Sequential model = Sequential()

또는 텐서플로우에 포함된 케라스를 이용하여 모델을 생성하는 방법이다.

from tensorflow import tf model = tf.keras.Sequential()

모델은 크게 네트워크(Network), 목표함수(Objective Function), 최적화기(Optimizer) 3가지 블록으로 구성된다.

네트워크(Network)

from keras.layers import Dense 
model.add(Dense(units=64, activation='relu', input_dim=100)) 
model.add(Dense(units=10, activation='softmax')
)

네트워크는 모델의 머리에 해당 하는 부분이라고 할 수 있다.

네트워크는 층을 나누어서 주는 역할을 한다.

Dense를 이용해 층을 생성한다.

하지만 실제로 네트워크를 생성하는 경우는 거의 없다. 왜냐하면 이미 생성된 것들을 가져다 사용하기 때문이다.

목표함수(Objective Function)

모델의 상반신에 해당하는 부분이라고 할 수 있다.

딥러닝의 학습목표에 해당한다.

즉 문제를 푸는 역할을 담당한다.

최적화기(Optimizer)

학습에 도움을 주는 역할이다.

현실 세계에서의 사설 학원과 같은 역할이라고 할 수 있다.

목표함수에 의해서 산출된 차이에 따라 네트워크를 갱신해 주는 역할을 한다.

 

컴파일(Compile)

컴파일은 네트워크가 학습할 준비가 되었다는 의미이다.

model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

 

 

시그모이드(Sigmoid)

결과값을 0과 1사이의 실수로 생성한다.

 

소프트맥스(Softmax)

최종 결과값의 합이 1이 되도록 한다

 

배치사이즈

한번에 학습하는 단위다.

문제를 풀 때 한번에 학습하는 단위로 1문제 단위로 풀것인가? 10문제 또는 100문제 단위로 풀것인가? 의 의미로 해석할 수 있다.

에포크(EPOCH)

학습하는 횟수

같은 문제집을 여러번 풀게 되면 문제집을 외우게 되게 인공지능에서는 이로인해 오버핏이 발생하게 된다.

 

반응형