Article : 인공지능 프레임워크, 좀 더 알아보자 : 케라스 편
https://brunch.co.kr/@f38b64b143b343c/10
<아티클 내용 요약>
'케라스'는 '텐서플로우'와 함께 대표적인 파이썬 딥러닝 라이브러리로 케라스는 정확히 말하면 파이썬으로 작성된 신경망 라이브러리다. 딥러닝 엔진을 쉽게 다룰 수 있는 인터페이스 라이브러리인 데다 직관적인 API를 제공하고 있고 오픈 소스라는 점 등이 더해져 '텐서플로우'와 함께 긴 시간 사랑받아왔다.
케라스? 약간 헤어 제품 이름 같기도 하고...?
2015년 3월, '사용자 친화성'에 중점을 두고 개발한 딥러닝 프레임워크다. 사용자에게 필요한 빠르고, 간편하고, 쉽다는 특성이 있다. 거의 모든 종류의 딥러닝 모델을 간편하게 만들고 훈련할 수 있다.
케라스가 빠르게 모델을 만들 수 있는 이유는 신속하고 간편하기 때문인데, 이 간편함은 머신러닝, 딥러닝 초보자에게 매력적으로 다가올 수 있다. 그래서 주로 입문용으로 추천하는 경우가 제일 많은 프레임워크다. 처음 머신러닝, 딥러닝을 시작했다면, 그리고 간단하게 모델을 제작해야 하거나 이른 시일 안에 프로토타이핑해야 한다면 케라스를 선택하여 개발하는 것이 적절한 선택일 수 있다.
케라스는 사실상 넓게, 다양한 사용자 케이스를 커버하고 있다. 그래서인지 모델 구축에 있어 다양한 방식을 제공하고 있는데 사용자 수준 높낮이에 따라 다양한 워크플로우를 사용할 수 있다.
케라스의 주요 데이터 구조는 model로 레이터를 조작하는 방식으로 사이킷 런처럼 fit() 메소드 하나로 알아서 모델 구축 등의 과제를 처리하게 만들건, 넘파이를 사용해 세부 내용을 완벽히 제어할 수 있다는 장점이 있다.
간단해서 좋긴 한데, 이 오류는 어디에서 온 거지?
케라스의 간편함은 장점이지만 문제를 낳기도 한다. 모듈에 적합한, 빠르고 간단한 프로젝트라면 케라스가 가진 장점이 도움이 되지만 프로젝트가 복잡해지면 모듈을 응용하고, 구현하기 쉽지 않아져 버린다. 복잡한 프로젝트에 구현 범위가 다소 좁아져서 결국은 텐서플로우처럼 직접 기초 레벨부터 작업해야 하는 프레임워크를 찾게 될 수밖에 없게 된다.
케라스의 특성이 너무 강한 나머지, 모든 케이스를 커버할 수 없게 되는 것이다.
텐서플로-케라스 조합보다 파이토치의 인기가 높다고?
케라스는 2015년 11월 텐서플로우가 세상에 나온 이후, 티아노와 텐서플로우를 모두 커버하는 멀티 백엔드 구조가 되었는데, 텐서플로우와의 본격적인 결합은 2019년이라고 할 수 있다.
두 프레임워크의 조합은 각자 떨어져 있을 때는 아쉽게 느꼈던 점을 상호 보완할 수 있어 좋아 보인다. 오죽하면 케라스를 만난 텐서플로우를 시작으로 AI 개발을 하게 된 개발자들은 '쉽게 배웠다'라는 우스개 섞인 부러운 이야기도 나온다고 했다. 그래서인지 텐서플로우와 케라스를 활용해 머신러닝, 딥러닝을 하는 경우가 점차 늘고 이제는 케라스로 개발한다는 것은, 텐서플로우로 개발한다는 것과 동일한 의미라고 볼 수 있다.
텐서플로우가 어떻게 하면 더 효율적인 딥러닝 엔진을 만들 것인지 하드웨어의 관점에서 고민하는 프레임워크라면, 케라스는 '간편하고 빠르다'라는 장점을 십분 발휘해서 개발자들이 더 쉽게 텐서플로우를 컨트롤할 수 있도록 한다. 즉, 텐서플로우가 하드웨어를 제어한다면 케라스는 하드웨어를 제어하는 텐서플로우를 제어하는 구조인 것이다.
그런데 이렇게 잘 맞는 조합보다 파이토치가 더 주목받고 있다는 이야기가 있다.
파이토치는 '쉽다'라는 점을 강력하게 어필할 수 있는 프레임워크다. 아무래도 텐서플로우가 초보자에게 만만치 않은 프레임워크다 보니, 케라스와 만나 간편해졌더라도 파이토치의 매력과 비교할 수 없지 않으냐는 의견이 많다.
<알게 된 개념>
케라스라는 프레임워크의 장점을 보고 나도 해봐야겠다는 생각이 들었다.
쉽고 빠르고 간편하다. 그리고 초보자도 접근하기 좋다는 장점이 매력적으로 다가왔기 때문이다.
그러다 맨 마지막에 파이토치에 대해 이야기를 해 파이토치에 대해 알아보고 어떤 프레임워크를 도전해 볼지 생각해 보기로 마음먹었다.
매일 새로운 프레임워크를 알아갈 수 있어 재미있다.
내가 모르는 다양한 프레임워크들과 어떻게 사용할 수 있는지를 생각하면서 프로젝트를 고민해 봐야겠다.