번역가 | Liu Tao
리뷰어 | Sun Shujuan
인공지능(AI)과 기계 학습(ML)은 우리의 일상 동반자입니다. 알고리즘과 통계 모델이 없다면 삶이 어떨지 상상하기 어렵습니다. 머신러닝이라는 단어를 들을 때마다 가장 먼저 떠오르는 것은 Python입니다. Python은 오랫동안 기계 학습의 목소리였기 때문에 기계 학습의 기술적 측면을 구현하는 데 중요한 역할을 해왔습니다.
Python은 아마도 48.24%의 개발자가 사용하는 가장 아름다운 기계 학습 언어일 것입니다. Python은 강력하고 편리한 저수준 패키지와 고수준 API 인터페이스를 갖추고 있기 때문에 과학 컴퓨팅의 모든 분야에서 비교할 수 없는 장점을 가지고 있지만 특정 작업에 사용할 때는 몇 가지 단점도 있습니다. 따라서 Python을 대체할 언어에 대한 필요성이 점점 더 일반화되고 있습니다.
현재 많은 신흥 언어는 성능 측면에서 Python과 비슷하거나 더 뛰어납니다. 따라서 더 이상 머신러닝을 위한 유일한 옵션이 아닙니다. Scala, Julia, MQL5 및 Python의 상위 집합이 아닌 기타 언어를 사용하여 기계 학습 애플리케이션을 개발하고 제공할 수 있습니다. 따라서 머신러닝은 더 이상 Python에만 국한되지 않습니다.
이 기사에서는 새로운 기계 학습 언어의 출현, 이러한 언어가 Python의 시장 점유율을 어떻게 잠식하고 있는지, 기계 학습이 미래에 어떻게 변화할지 살펴보겠습니다.
개발자와 데이터 과학자가 자주 직면하는 Python의 단점에 대해 논의해 보겠습니다.
Python 개발은 빠르지만 계산 속도는 매우 느립니다. 컴파일러보다는 인터프리터를 사용합니다. 순차 코드 실행으로 인해 다른 데이터 과학 프로그래밍 언어보다 속도가 느립니다. C에는 유용한 도구와 라이브러리가 많기 때문에 Python은 C보다 느립니다. 벡터화된 코드를 마스터하지 않으면 코드가 얼마나 느린지 알 수 있습니다.
Cython은 Python의 상위 집합입니다. Python 소스 코드를 C 언어 코드로 컴파일합니다. 가장 중요한 것은 추가 컴퓨팅 리소스 없이 C 언어 수준의 컴퓨팅 속도를 제공한다는 것입니다. 많은 프로그래머는 Cython을 사용하여 C 언어만큼 빠르게 실행되지만 더 간단하고 읽기 쉬운 Python 코드를 작성합니다.
Python은 동적 타이핑으로 인해 디자인에 큰 결함이 있습니다. 일반적으로 프로그래밍 언어에서 동적으로 유형이 지정된 변수에는 특별한 선언이 필요하지 않습니다. Python은 혼란스러울 수 있는 덕 타이핑을 사용합니다. 덕 타이핑에서는 개체의 클래스나 속성이 해당 기능보다 덜 중요합니다. 덕 타이핑에는 유형 검사가 필요하지 않습니다. 프로세스나 속성을 확인할 수도 있습니다.
파이썬은 거대한 구조로 인해 메모리를 많이 차지합니다. 또한 Python 데이터 유형은 메모리 소비 측면에서 유연합니다. 메모리 집약적인 작업에는 적합하지 않습니다. 유연한 데이터 유형으로 인해 메모리 소비도 발생합니다. 따라서 대규모의 장기 실행 Python 시스템을 만들 때 Python의 메모리 관리가 어려워집니다.
Python은 다른 언어에 비해 스레드 효율성이 떨어집니다. Python은 다중 스레드이지만 한 번에 하나의 스레드만 실행할 수 있습니다. 따라서 다중 스레드 Python은 단일 스레드 처리 효율성을 제공합니다. Python에는 한 번에 하나의 스레드만 사용할 수 있도록 허용하는 전역 해석기 잠금(GIL)이 있습니다. Python이 기본 라이브러리를 사용하는 경우에만 여러 스레드를 동시에 실행할 수 있습니다. 또한 Python의 상위 집합인 Jython은 멀티스레딩을 구현할 수 있지만 Python은 구현할 수 없습니다.
파이썬은 정말 훌륭해요. 하지만 플래시와 인크레더블 헐크가 동시에 될 수는 없습니다! 누군가는 플래시를 원할 수도 있고 누군가는 헐크를 원할 수도 있습니다. 사용자의 요구는 다양합니다. 마찬가지로 Python은 수학 및 데이터 과학 응용 프로그램용으로 설계되지 않았습니다. 딥 러닝 알고리즘에 특화된 NumPy 또는 Tensorflow와 같은 타사 라이브러리가 필요합니다. 따라서 데이터 관련 프로그래밍 언어는 Python보다 장점이 있습니다.
예를 들어, 비즈니스 세계에서 머신러닝은 실행 시간을 줄이기 위해 속도와 확장성이 필요합니다. 고객을 너무 오래 기다리게 할 수는 없습니다. 따라서 수행하려면 더 빠른 ML 언어(범용 기능 프로그래밍 언어)가 필요합니다. 빠를수록 좋습니다.
이제 Python은 빠르지만 Python보다 더 빠른 것이 또 있을까요? 네, Julia 또는 Scala입니다!
이 경우 데이터 과학자는 Python이 아닌 다른 프로그래밍 언어를 사용하는 것을 선호합니다.
다양한 애플리케이션 환경에서 Python과 같거나 더 나은 성능을 발휘하는 여러 Python 대안이 있습니다. 다음은 몇 가지 Python 데이터 과학 대안입니다.
Julia는 혁신적이고 빠르며 편안한 새로운 고급 동적 프로그래밍 언어입니다. 다양한 애플리케이션을 작성할 수 있는 범용 언어입니다. 패키지 생태계와 기능의 상당 부분이 고급 수치 계산에 맞춰져 있어 기계 학습에 이상적이라는 점은 언급할 가치가 있습니다.
Julia는 C 언어와 Python, R, MATLAB과 같은 고급 동적 클래스 언어를 포함한 여러 언어를 기반으로 구축되었습니다. Julia는 이들 언어의 장점을 결합하고 약점을 제거하는 것이 목표이기 때문에 이러한 언어의 선택적 유형, 구문 및 기능을 활용합니다.
Julia의 제작자는 과학 컴퓨팅, 기계 학습, 데이터 마이닝, 대규모 선형 대수, 분산 및 병렬 컴퓨팅을 C만큼 빠르게 처리할 수 있는 언어를 개발하고 싶었습니다. 그러나 그들은 결국 더 빠른 언어를 개발했습니다. Python이 점점 빨라지고 있음에도 불구하고 Julia는 여전히 Python보다 성능이 뛰어납니다.
Julia는 기계 학습을 위한 많은 수학적 표기법을 단순화합니다. GPU가 범용 코드를 실행할 수 있도록 하는 ArrayFire와 같은 다양한 GPU 프로그래밍 패키지를 제공합니다. 각 패키지에는 고유한 프로그래밍 모델이 있습니다. 예를 들어 NVIDIA에는 CUDA.Jl이 있고 AMD에는 AMDGPU.jl이 있습니다.
기계 학습 엔지니어는 MLBase.jl, Flux.jl(딥 러닝), MLJ.j(일반 기계 학습) 및 Knet.jl(딥 러닝)과 같은 강력한 도구의 이점을 활용하여 대규모 클러스터에 Julia를 신속하게 배포할 수 있습니다. Flux는 Julia의 기능을 극대화하기 위한 추가 도구가 사전 로드되어 있는 고속 심층 기계 학습 라이브러리입니다. 마찬가지로 ML 애플리케이션용 ScikitLearn.jl, TensorFlow.jl 및 MXNet.jl이 포함되어 있습니다.
Julia는 복잡한 계산 문제를 해결하는 데 능숙합니다. 따라서 스탠포드 대학, 도쿄 메트로폴리탄 대학 등 많은 유명 대학에서 Julia 코스를 제공하고 있습니다. 성능도 Python에 비해 매우 견고합니다.
Logan Kilpatrick과 같은 수많은 업계 임원들은 Julia가 기계 학습 및 데이터 과학의 미래라고 믿습니다.
Julia의 주요 기능:
ApacheSpark는 강력하고 빠른 실시간 데이터 스트리밍 및 데이터 처리 도구입니다. Scala Spark는 복잡한 매핑, ETL 및 대규모 데이터 처리 작업을 용이하게 합니다. Scala를 사용하면 사용자는 코드를 이해하여 새로운 Spark 기능을 구현할 수 있습니다. Scala는 Java와 호환되므로 프로그래머는 객체 지향 개념을 빠르게 익힐 수 있습니다.
SparkMLlib에는 Spark의 고품질 알고리즘과 뛰어난 성능이 포함되어 있어 확장 가능한 기계 학습 라이브러리가 됩니다. 분류, 회귀, 클러스터링, 협업 필터링 및 차원 축소는 모두 Spark의 MLlib 기계 학습 라이브러리에 포함되어 있습니다. 또한 Breeze, Spire, Saddle 및 Scalalab은 강력한 데이터 처리 애플리케이션을 만드는 데 도움이 되는 기타 ML 라이브러리입니다.
Apache Kafka는 오픈소스 분산 이벤트 스트리밍 플랫폼으로 Python의 인기와 함께 Spark도 인기를 끌고 있습니다. Scala Spark에서 느리게 실행되는 모든 항목은 PySpark에서 충돌이 발생합니다. 또한 TensorFlow Scala 라이브러리를 사용하여 머신러닝 모델을 위한 적응형 고성능 제공 시스템을 만들 수 있습니다.
Scala의 정적 타이핑은 복잡한 애플리케이션을 용이하게 합니다. JVM 및 JavaScript 런타임을 통해 고성능 시스템에서 라이브러리에 쉽게 액세스할 수 있습니다. 게다가 성능도 Python보다 좋습니다. 또한 Python과 비교하여 자체적으로 보유하고 있습니다.
Scala의 주요 기능Scala의 일부 핵심 기능은 효율적인 데이터 과학 계산을 가능하게 합니다.
Scala는 Python보다 10배 빠릅니다. 고급 유형 추론 메커니즘이 있습니다.MQL5 언어 문서에는 함수, 연산, 예약어 등이 나열되어 있습니다. 또한 정수, 부울, 리터럴, 문자열, 날짜 및 시간과 같은 데이터 유형을 제공합니다. 복잡한 구조와 클래스를 가지고 있습니다. 또한 문서에는 거래 전략, 제어판, 사용자 정의 시각 효과, 파일 액세스 등에 대한 표준 라이브러리 클래스 정의가 포함되어 있습니다.
또한 MQL5에는 새로운 애플리케이션 개발을 위한 1,500개 이상의 소스 코드 라이브러리가 있습니다. 수많은 수치해석 기능을 포함하고 있는 ALGLIB 라이브러리를 사용할 수 있습니다. 마찬가지로 시계열 처리를 위한 TimeSeries 라이브러리와 퍼지 모델 개발을 위한 Fuzzy 라이브러리 등 다양한 라이브러리가 있습니다.
MQL5는 실시간 시스템을 구축하고 시각적 의사결정 지원을 제공할 수 있는 강력한 프로그래밍 언어입니다. MQL5는 열거형, 구조, 클래스 및 이벤트를 지원합니다. 주요 임베디드 기능의 수를 늘려서 MQL5 프로그램은 DLL과 통신할 수 있습니다.
MQL5는 C++와 유사한 구문을 가지고 있어 다른 프로그래밍 언어로 작성된 프로그램을 MQL5 프로그램으로 쉽게 변환할 수 있습니다. 따라서 데이터 분석, 인공지능, 금융 도구를 트레이딩 로봇으로 활용하면 C++와 동일한 효율성을 얻을 수 있습니다.
MQL5의 주요 기능
MQL5의 일부 핵심 기능은 효율적인 데이터 과학 계산을 가능하게 합니다.
마찬가지로 모든 프로그래밍 언어에는 고유한 특성과 전문 분야가 있습니다. 따라서 귀하의 요구 사항과 사양에 맞는 언어를 선택하는 것이 가장 좋습니다.
5.
요약머신러닝은 지속적이고 진화하는 프로세스입니다. 시간이 지나면서 표준화된 ML(SML) 언어로 등장하여 Python에서 인기를 얻었습니다. 오늘날 다양한 요구 사항에 따라 기계 학습 언어가 다양하게 개발되고 있습니다.
원본 링크: https://hackernoon.com/not-only-python-problems-errors-and-alternatives
번역자 소개Liu Tao, 51CTO 커뮤니티 편집자, 온라인 탐지 및 제어 책임자 주요 책임은 누락된 스캔, 침투 테스트, 기준 검사 및 기타 탐지 작업에 대한 시스템의 온라인 승인을 엄격하게 검토하는 것입니다. 그는 다년간의 네트워크 보안 관리 경험, 다년간의 PHP 및 웹 개발 및 방어를 보유하고 있습니다. 경험, Linux 사용 및 관리 경험을 보유하고 있으며 코드 감사, 네트워크 보안 테스트 및 위협 마이닝 분야에서 풍부한 경험을 보유하고 있습니다. SQL 감사, SQLMAP 자동 감지, XSS 감사, Metasploit 감사, CSRF 감사, 웹셸 감사, Maltego 감사 및 Kali의 기타 기술에 능숙합니다.
위 내용은 Python의 대체품을 찾기 위해 서두르는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!