TensorFlow 란 무엇입니까? 기계 학습 라이브러리 설명

기계 학습은 복잡한 분야입니다. 그러나 머신 러닝 모델을 구현하는 것은 데이터 수집, 모델 학습, 예측 제공 및 향후 결과 수정 프로세스를 용이하게하는 Google의 TensorFlow와 같은 머신 러닝 프레임 워크 덕분에 예전보다 훨씬 덜 어렵고 어렵습니다.

Google Brain 팀에서 만든 TensorFlow는 수치 계산 및 대규모 기계 학습을위한 오픈 소스 라이브러리입니다. TensorFlow는 수많은 기계 학습 및 딥 러닝 (일명 신경망) 모델과 알고리즘을 함께 묶어 공통 은유 방식으로 유용하게 만듭니다. Python을 사용하여 프레임 워크로 애플리케이션을 빌드하기위한 편리한 프런트 엔드 API를 제공하는 동시에 이러한 애플리케이션을 고성능 C ++로 실행합니다.

TensorFlow는 손으로 쓴 숫자 분류, 이미지 인식, 단어 임베딩, 반복 신경망, 기계 번역을위한 시퀀스-시퀀스 모델, 자연어 처리 및 PDE (부분 미분 방정식) 기반 시뮬레이션을 위해 심층 신경망을 훈련하고 실행할 수 있습니다. 무엇보다도 TensorFlow는 학습에 사용되는 동일한 모델을 사용하여 대규모 프로덕션 예측을 지원합니다.

TensorFlow의 작동 원리

TensorFlow를 사용하면 개발자가 데이터 흐름 그래프 (그래프 또는 일련의 처리 노드를 통해 데이터가 이동하는 방식을 설명하는 구조) 를 만들 수 있습니다 . 그래프의 각 노드는 수학적 연산을 나타내며 노드 간의 각 연결 또는 간선은 다차원 데이터 배열 또는 tensor 입니다.

TensorFlow는 Python 언어를 통해 프로그래머에게이 모든 것을 제공합니다. Python은 배우고 작업하기 쉬우 며 고수준 추상화를 함께 결합하는 방법을 편리하게 표현할 수있는 방법을 제공합니다. TensorFlow의 노드와 텐서는 Python 객체이고 TensorFlow 애플리케이션은 그 자체로 Python 애플리케이션입니다.

그러나 실제 수학 연산은 Python에서 수행되지 않습니다. TensorFlow를 통해 사용할 수있는 변환 라이브러리는 고성능 C ++ 바이너리로 작성됩니다. Python은 조각간에 트래픽을 전달하고이를 연결하기 위해 높은 수준의 프로그래밍 추상화를 제공합니다.

TensorFlow 애플리케이션은 편리한 대부분의 대상 (로컬 머신, 클라우드의 클러스터, iOS 및 Android 기기, CPU 또는 GPU)에서 실행할 수 있습니다. Google의 자체 클라우드를 사용하는 경우 추가 가속화를 위해 Google의 커스텀 TensorFlow Processing Unit (TPU) 실리콘에서 TensorFlow를 실행할 수 있습니다. 하지만 TensorFlow에서 생성 된 결과 모델은 예측을 제공하는 데 사용되는 대부분의 기기에 배포 할 수 있습니다.

2019 년 10 월에 출시 된 TensorFlow 2.0은 사용자 피드백을 기반으로 다양한 방식으로 프레임 워크를 개선하여 작업을 더 쉽게 (예 : 모델 학습을 위해 비교적 간단한 Keras API 사용)하고 성능을 향상 시켰습니다. 새로운 API 덕분에 분산 학습을 더 쉽게 실행할 수 있으며 TensorFlow Lite에 대한 지원을 통해 더 다양한 플랫폼에 모델을 배포 할 수 있습니다. 하지만 새로운 TensorFlow 2.0 기능을 최대한 활용하려면 이전 버전의 TensorFlow 용으로 작성된 코드를 다시 작성해야합니다.

TensorFlow 이점

TensorFlow가 머신 러닝 개발에 제공하는 가장 큰 장점은 추상화입니다. 알고리즘 구현의 핵심적인 세부 사항을 처리하거나 한 기능의 출력을 다른 기능의 입력에 연결하는 적절한 방법을 찾는 대신 개발자는 애플리케이션의 전체 논리에 집중할 수 있습니다. TensorFlow는이면의 세부 사항을 처리합니다.

TensorFlow는 TensorFlow 앱을 디버그하고 내부 검사를 받아야하는 개발자에게 추가적인 편의를 제공합니다. 즉시 실행 모드를 사용하면 전체 그래프를 단일 불투명 개체로 구성하고 한 번에 모두 평가하는 대신 각 그래프 작업을 개별적이고 투명하게 평가하고 수정할 수 있습니다. TensorBoard 시각화 제품군을 사용하면 대화 형 웹 기반 대시 보드를 통해 그래프가 실행되는 방식을 검사하고 프로파일 링 할 수 있습니다.

TensorFlow는 또한 Google에서 A-list 상업 의상을 지원함으로써 많은 이점을 얻습니다. Google은 프로젝트이면의 빠른 개발 속도를 촉진했을뿐만 아니라 TensorFlow와 관련하여 배포와 사용을 더 쉽게 해주는 중요한 제품을 많이 만들었습니다. 위에서 언급 한 Google 클라우드의 성능 가속화를위한 TPU 실리콘; 프레임 워크로 만든 모델 공유를위한 온라인 허브 브라우저 내 및 모바일 친화적 인 프레임 워크 구현 그리고 훨씬 더.

한 가지주의 사항 : TensorFlow의 구현에 대한 세부 정보로 인해 일부 학습 작업에 대해 완전히 결정적인 모델 학습 결과를 얻기가 어렵습니다. 때로는 한 시스템에서 훈련 된 모델이 똑같은 데이터를 제공하더라도 다른 시스템에서 훈련 된 모델과 약간 다를 수 있습니다. 그 이유는 미끄 럽습니다. 예를 들어, 난수를 시드하는 방법, 위치 또는 GPU를 사용할 때 특정 비 결정적 동작). 즉, 이러한 문제를 해결할 수 있으며 TensorFlow 팀은 워크 플로의 결정성에 영향을 미치기 위해 더 많은 제어를 고려하고 있습니다.

관련 비디오 : 기계 학습 및 AI 해독

기계 학습 및 인공 지능에 대한 과장된 광고를 깨고 패널이 기술의 정의와 의미에 대해 이야기합니다.

TensorFlow vs. 경쟁

TensorFlow는 다른 수많은 기계 학습 프레임 워크와 경쟁합니다. PyTorch, CNTK 및 MXNet은 많은 동일한 요구를 해결하는 세 가지 주요 프레임 워크입니다. 아래에서 그들이 눈에 띄는 부분과 TensorFlow에 비해 부족한 부분을 언급했습니다.

  • PyTorch 는 Python으로 빌드 될뿐만 아니라 TensorFlow와 다른 많은 유사점을 가지고 있습니다. 하드웨어 가속 구성 요소, 사용에 따른 디자인 작업을 허용하는 고도의 대화 형 개발 모델, 이미 포함 된 많은 유용한 구성 요소. PyTorch는 일반적으로 짧은 시간에 실행해야하는 프로젝트의 빠른 개발에 더 나은 선택이지만 TensorFlow는 더 큰 프로젝트와 더 복잡한 워크 플로에 적합합니다.

  • TensorFlow와 같은 Microsoft Cognitive Toolkit 인 CNTK 는 그래프 구조를 사용하여 데이터 흐름을 설명하지만 딥 러닝 신경망을 만드는 데 가장 중점을 둡니다. CNTK는 많은 신경망 작업을 더 빠르게 처리하고 더 광범위한 API 세트 (Python, C ++, C #, Java)를 제공합니다. 그러나 CNTK는 현재 TensorFlow만큼 배우거나 배포하기가 쉽지 않습니다.

  • Amazon에서 AWS의 프리미어 딥 러닝 프레임 워크로 채택한 Apache MXNet 은 여러 GPU와 여러 머신에서 거의 선형으로 확장 할 수 있습니다. 또한 Python, C ++, Scala, R, JavaScript, Julia, Perl, Go와 같은 광범위한 언어 API를 지원합니다. 기본 API는 TensorFlow만큼 작업하기에 좋지는 않습니다.