빅데이터 분석에 관해 관심을 가졌던 분들이라면,
'머신러닝'과 '딥러닝'에 대해 많이 들어보셨을거라고 생각합니다 !
머신러닝(Machine Learning)이란,
데이터가, 미래를 예측할 수 있도록
기계를 사람처럼 학습시키는 것을 의미합니다.
즉, 의사 결정 기준에 대한 경우의 수를 사람이 직접 코딩해 넣는 것이 아닌,
많은 양의 데이터 및 알고리즘만 입력해두면
컴퓨터가 머신러닝을 통해 스스로 해결방안을 학습하게 되는 것이죠 !
지금의 머신러닝은 컴퓨터 비전 등의 분야에서 큰 성과를 이뤄내고 있습니다.
하지만, 머신러닝에는 컴퓨터가 '정해진' 일을 수행하는 프로그래밍 작업이 동반된다는 한계점이 있습니다.
딥러닝(Deep Learning)은 머신러닝의 한 분야로,
인간의 뇌에서 구현되는 지능을 구현한 ‘인공신경망’을 이용하는,
특화된 학습방법을 의미합니다.
딥러닝의 ‘Deep’이 “깊은”이라는 의미를 가지는 것처럼,
머신러닝의 학습방법이 확대되거나 커진 개념이라 할 수 있겠죠?
병렬 연산에 최적화된 GPU와 인터넷 속도가 발전하며,
진정한 딥러닝 기반의 인공지능이 등장하였습니다.
대표적인 딥러닝 기반 인공지능으로는 구글의 '알파고'가 있습니다!
바둑의 기초를 다지고, 자신과 같은 AI를 상대로 반복적으로 대국을 벌이며 신경망을 더욱더 강화한다는 점은
학습 데이터를 수동으로 제공해야만 하는 머신러닝과 가장 크게 차이나는 점이라고 할 수 있습니다.
그렇다면, 딥러닝(Deep Learning)의 '프레임워크(Framework)'란 무엇일까요?
파이썬을 공부하는 학생이라면 모두 들어봤을 '라이브러리(library)'를 떠올리면 더 쉽게 이해하실 수 있을 것입니다!
'프레임워크'와 '라이브러리'는
둘다 일반적인 문제를 해결하는 데 사용하는, 다른 사람이 작성한 코드입니다.
<집을 짓는 과정>에 비유해보자면,
프레임워크는 '모델하우스를 짓는 것'에 비유할 수 있습니다.
모델하우스는 이미 지어진 집이기 때문에, 집의 인테리어, 방의 용도 등은 우리가 원하는대로 수정하기는 어렵죠.
즉 프레임워크에서는 제공되는 틀에 따라 코드를 작성해야 하므로,
통제권은 프로그램 사용자가 아닌 프레임워크가 쥐고 있습니다.
하지만 '라이브러리'는 '이케아에서 산 재료로 가구를 직접 조립하는 것'에 비유할 수 있는데요,
우리가 원하는 재료로, 원하는대로 조립하고 배치할 수 있겠죠.
즉, 코드의 선택권이나 통제권은 사용자에게 있다고 할 수 있습니다.
파이썬의 코드를 짜는 간단한 과정에서는 '라이브러리'를 사용하는 것이 편리하겠지만,
프로그램, 애플리케이션 등 소프트웨어를 직접 개발하려면,
백지에서 시작해야 하는데, 이건 너무 번거롭고 시간, 비용 관점에서도 부담스러울 수 있을 것입니다.
그래서 이 '설계'와 '구현'을 조금 더 편리하게 해낼 수 있도록,
기존의 설계, 구현된 것을 '재사용'할 수 있게끔 해주는 대상이 바로 '프레임워크'라고 할 수 있습니다.
[ 딥러닝의 프레임워크 5종류 알아보기 ]
지금부터는 딥러닝에서 자주 언급되는 프레임워크 5개를 살펴보도록 하겠습니다!
1. 텐서플로 Tensorflow
Tensorflow는 Google Brain Team에서 개발한 프레임워크인데요,
Google뿐 아니라 Airbnb, Dropbox, eBay 등 다양한 기업에서 활용하고 있습니다.
open source인데다가 거의 모든 종류의 기기에서 애플리케이션을 실행할 수 있고,
기본 언어는 Python이지만 C++, Java, Julia 및 JavaScript와 같은 다른 언어로도
인터페이스에 접근, 제어할 수 있다는 유연한 점 덕분에, 인기가 아주 많습니다 !
2010년대부터 시작하여,
‘즉시 실행’ 모드를 담은 2.0 이후 버전을 거쳐
오늘날의 점유율 1위 자리를 굳건히 지키고 있습니다.
뒤에서 얘기할 Keras와의 만남으로 단점을 보완하기도 했습니다.
텐서플로는 광범위한 유저층을 보유하고 있고, 다른 API와 여러 가지를 통합해,
커뮤니티에서 빠른 지원 및 업데이트를 받을 수 있다는 점도 큰 장점으로 작용하는데요,
이때문인지, 북미권에서 사용률이 높게 나타나는 프레임워크이기도 합니다 !
2. 파이토치 (Pytorch)
파이토치는 'Meta'에서 Facebook 서비스 운영을 지원하기 위해 개발되었습니다.
파이토치가 급격히 떠오른 배경에는
Python을 스크립팅 언어(scripting language) (=응용 소프트웨어를 제어하는 컴퓨터 프로그래밍 언어) 로 사용한다는 점,
동적 그래프를 통한 ‘유연함’, 쉬운 절차 등을 꼽을 수 있습니다.
특히 동적으로 업데이트된 그래프를 통한
<개발 영역 내외의 환경 변화에 유연하게 대응할 수 있다는 점>이 가장 장점이라 언급되는데요,
데이터를 처리할 때, 아키텍처(Architecture) (=수집, 변환, 분배, 소비까지, 데이터가 관리되는 방식) 를 변경할 수도 있고, 속도를 중점에 둔 딥러닝 플랫폼을 개발하기에도 적합하기 때문입니다.
지원 범위도 점차 확장되고 있는 중이기에,
AI 산업 영역에서 더욱 '핫한' 프레임워크로 자리매김하게 될 것 같습니다!
3. 케라스 (Keras)
케라스(Keras)는 '단순한 인터페이스'를 특징으로 합니다.
<사용자들이 어떻게 하면 코딩을 더 쉽게 할 수 있을지>에 대해서
고민했던 과정에서 탄생한 프레임워크이기 때문입니다.
때문에 접근성이 좋다는 특징을 가지고 있는데요,
딥러닝 초보자라면 한 번쯤 추천받는 프레임워크라고 합니다.
케라스는 Python을 기반으로 하고 있고, 다양한 뉴럴 네트워크 모델을 지원하고 있기 때문에,
모델들을 활용해 네트워크를 만들고 빨리 코딩을 할 수 있게 됩니다.
케라스는 텐서플로의 단점을 커버한다는 점도 흥미로운데요,
기초 레벨부터 직접 작업해야 하는 텐서플로와 달리,
케라스의 심플함, 명확함, 그리고 모듈의 조합으로 쉽게 만드는 모델 이기 때문에,
많은 사람에게 인기있는 프레임워크이기도 합니다!
또한 MXNet, PlaidML, CNTK, 테아노과 같은 백엔드 엔진과도 통합이 가능하고,
다양한 GPU 및 분산 학습을 지원한다는 점에서도 유용한 프레임워크라고 할 수 있겠죠 !
4. LightGBM
LightGBM에서 GBM은 Gradient Boosting Machine의 약자입니다.
줄여서 LGBM이라고 쓰기도 하는데요,
트리 기반의 학습 알고리즘인 gradient boosting 방식을 차용했다는 점을
의미하는 이름의 프레임워크라고 합니다.
‘Light’가 의미하는 것처럼, 빠른 속도와 적게 차지하는 메모리가 장점이라고 할 수 있습니다.
학습소요 시간이 적다는 점이 가장 장점으로 꼽히지만,
데이터가 적은 경우에는 ‘과적합’이 발생하기 쉽다고 합니다.
LGBM에서는 약 10,000건 이하의 데이터셋일 경우에,
과적합이 발생할 수 있다고 공식적으로 밝히기도 했습니다.
하지만 앞서 언급한 장점들 덕분에 LightGBM에 꾸준한 수요가 있다고 합니다!
5. JAX
JAX 역시 Google에서 개발 및 관리하고 있는 프레임워크입니다.
머신러닝과 고성능 연산 작업에 주로 쓰이는데요,
구글 연구진이 JAX를 기준으로 많은 연구를 진행하고 있다고 합니다.
1) 사용하고 있는 제품 CPU, GPU, TPU에서 코드를 변경하지 않고 사용할 수 있다는 점,
2) 자동미분(Autograd)이 가능한 점,
3) JIT 컴파일 방식이라 빠른 속도를 자랑한다는 점
등 다양한 장점을 갖고 있죠 !
JAX의 아쉬운 점 한가지는, 국내 자료가 많지 않다는 것입니다.
하지만 앞으로 국내 AI산업에서 거대 모델을 활용해 더 나은 AI 개발 환경을 구축하고,
또 서비스를 만들어 나갈 것이라는 점을 생각하면,
자료들이 충분히 확보되는 시점은 그리 멀지 않은 미래일 것입니다.
여기까지, 딥러닝의 '인공신경망'과 5가지의 '프레임워크'를 알아보았는데요 !
앞으로도 다양한 주제로 찾아뵙겠습니다 !
감사합니다 !
'데이터 분석 이슈 및 트렌드' 카테고리의 다른 글
신나게 놀아 보자! 생성형 AI 놀이터, PartyRock을 소개합니다! (0) | 2024.06.01 |
---|---|
데이터 기반 의사결정의 시작, 예측 애널리틱스에 대해 알아보자! (0) | 2024.05.10 |
🗯 ’심호흡하는 AI’, LLM이 뭐야? (0) | 2024.04.28 |
데이터에 인간미 한 방울, 페르소나 분석에 대해 알아보자 (0) | 2024.04.01 |
데이터 분석가와 마케터는 어떤 관계에 있을까?! (0) | 2023.12.10 |