머신러닝, 딥러닝으로 복잡한 문제를 해결하고 정교한 작업을 수행하기 위해 다양한 오픈소스 프레임워크가 공개되어 있습니다. 프레임워크(Framework)란 응용 프로그램을 개발하기 위한 여러 라이브러리나 모듈 등을 효율적으로 사용할 수 있도록 하나로 묶어 놓은 일종의 패키지를 말합니다.

현재 소개된 딥러닝 프레임워크들은 각각 다른 목적으로 제작되었으며, 각각의 고유한 기능과 특성을 제공합니다. 이중 유명한 딥러닝 프레임워크 3가지를 소개합니다.

1. 텐서플로(TensorFlow)

텐서플로는 구글이 개발한 오픈소스 소프트웨어 라이브러리이며 머신러닝과 딥러닝을 쉽게 사용할 수 있도록 다양한 기능을 제공합니다. 텐서플로는 데이터 플로우 그래프(Data Flow Graph) 구조를 사용하는 특징이 있습니다.

이는 수학 계산식과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향성 그래프로 표현하는 방식입니다. 각 노드 사이의 연결이나 다차원 배열 등을 의미하는 텐서 사이의 연결 관계를 풍부하게 표현할 수 있으며, 텐서보드 시각화 도구 모음을 사용하면 웹 기반의 대화형 대시보드에서 그래프 실행 방법에 대한 검사나 프로파일링도 가능합니다.

 

😁장점

텐서플로는 주로 이미지 인식이나 반복 신경망 구성, 기계 번역, 필기 숫자 판별 등을 위한 각종 신경망 학습에 사용합니다.  특히 대규모 예측 모델 구성에 뛰어나 테스트부터 실제 서비스까지 사실상 거의 모든 딥러닝 프로젝트에서 범용적으로 활용할 수 있습니다.

무엇보다 구글에서 전폭적으로 지원하고 있기 때문에 지속적인 성능 개선과 지원에서 타 프레임워크보다 빠르고 안정적이란 부분이 강점입니다. 이 밖에도 추상화 수준이 높아 텐서플로를 활용하면 개발자는 알고리즘의 세세한 구현보다 전체적인 논리 자체에 더 집중할 수 있게 되며 확장성 또한 뛰어납니다.

 

🤔단점

딥러닝 모델을 만드는 데 기초 레벨부터 직접 작업해야 하기 때문에 초보자가 사용하기 어려울 수 있습니다.

2. 케라스(Keras)

텐서플로의 문제를 해결하기 위해 보다 단순화된 인터페이스를 제공하는 케라스가 개발되었습니다. 케라스의 핵심적인 데이터 구조는 모델입니다.

케라스에서 제공하는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있으며, 다중 출력 등 더 복잡한 모델을 구성할 때는 케라스 함수 API를 사용하여 쉽게 구성할 수 있습니다. 이처럼 케라스는 딥러닝 초급자도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공합니다. 

 

😁장점

케라스는 일반 사용 사례에 최적화된 간단하고 일관된 인터페이스를 제공합니다. 사용자 오류에 대해 명확하고 실용적인 피드백을 제공합니다. 또한 케라스의 구성 요소는 모듈 형태로, 각 모듈이 독립성을 갖기 때문에 새로운 모델을 만들 때 각 모듈을 조합해 쉽게 새로운 모델을 만들 수 있습니다.

 

🤔단점

모듈화의 한계로 복잡한 프로젝트에 구현 범위가 다소 좁은 편입니다. 또한 케라스는 다양한 백엔드 위에서 동작하기 때문에 어떤 오류가 발생했을 때 케라스 자체의 문제인지, 백엔드 언어의 문제인지 특정하기 어려운 단점이 있습니다.

3. 파이토치(Pytorch)

토치(Torch)는 페이스북의 AI 연구 팀이 개발한 파이썬 기반 오픈소스 머신러닝 라이브러리입니다. 파이토치는 토치(Torch)라는 머신 러닝 라이브러리에 바탕을 두고 만들어졌습니다. 파이토치는 텐서플로와 다르게 절차가 간단하고 그래프가 동적으로 변화할 수 있으며 코드 자체도 파이썬과 유사해 진입 장벽이 낮은 편입니다.

 

😁장점

그래프를 만들면서 동시에 값을 할당하는 Define by run 방식으로 코드를 깔끔하고 직관적으로 작성할 수 있습니다. 또한 학습 속도도 텐서플로보다 빠릅니다. 텐서플로가 유기적을 신경망을 만들 수 없어 성능의 한계를 가지고 있는 반면, 파이토치는 메모리에서 연산을 하면서도 신경망 사이즈를 최적으로 바꾸면서 동작시킬 수 있습니다. 파이토치는 Numpy를 대체하면서도 GPU를 이용한 연산이 가능하며 유연하고 빠르기 때문에 최근 딥러닝 관련 논문에서는 텐서플로보다 파이토치를 선호하는 추세입니다.

 

🤔단점

텐서플로에 비해 사용자층이 낮고 학습에 필요한 자료와 예제를 구하기 쉽지 않습니다.

🤓딥러닝 프레임워크 한 눈에 보기!

  😁장점 🤔단점
텐서플로(TensorFlow) 텐서보드(TensorBoard)를 통해서 파라미터 변화 양상이나 DNN의 구조를 알 수 있음 메모리를 효율적으로 사용하지 못함
케라스(Keras) 배우기 쉽고 모델을 구축하기 쉬움 오류가 발생할 경우 케라스 자체의 문제인지  backend의 문제인지 알 수 없음
파이토치(Pytorch) 간단하고 직관적으로 학습 가능
속도 대비 빠른 최적화가 가능
텐서플로우에 비해 사용자층이 얕음
예제 및 자료를 구하기 힘듦

 


 

지난 시간 📎머신러닝 딥러닝 알고리즘에 이어, 딥러닝 프레임워크에 대해 알아보았습니다.
딥러닝의 등장으로 머신러닝의 실용성이 강화됐고, 인공지능의 영역이 점점 더 넓게 확장되고 있습니다. 따라서 이제 인공지능은 필요가 아닌 필수로 알아야 하는 학문이 되었습니다.

 

머신러닝과 딥러닝을 제대로 공부해볼 마음이 생겼다면
<혼자 공부하는 머신러닝 + 딥러닝>을 읽어보세요!

이 책에서는 위에서 살펴본 내용을 더 쉽게, 더 자세하게, 직접 실습하며 배울 수 있습니다.

 

👀도서 자세히보기
👨‍💻유튜브 무료 강의