Traducteur | Liu Tao
Critique | Sun Shujuan
L'intelligence artificielle (IA) et l'apprentissage automatique (ML) sont nos compagnons quotidiens. Il est difficile d'imaginer à quoi ressemblerait la vie sans algorithmes et modèles statistiques. Chaque fois que nous entendons le mot apprentissage automatique, la première chose qui nous vient à l’esprit est Python. Python étant depuis longtemps la voix de l’apprentissage automatique, il a joué un rôle important dans la mise en œuvre des aspects techniques de l’apprentissage automatique.
Python est probablement le plus beau langage d'apprentissage automatique, utilisé par 48,24% des développeurs. Étant donné que Python dispose de packages de bas niveau puissants et pratiques et d'interfaces API de haut niveau, il présente des avantages inégalés dans tous les domaines du calcul scientifique, mais il présente également certains inconvénients lorsqu'il est utilisé pour des tâches spécifiques. Par conséquent, le besoin de langages alternatifs à Python devient de plus en plus courant.
Actuellement, de nombreux langages émergents sont comparables voire meilleurs que Python en termes de performances. Ce n’est donc plus la seule option pour l’apprentissage automatique. Scala, Julia, MQL5 et d'autres langages qui ne sont pas un sur-ensemble de Python peuvent être utilisés pour développer et fournir des applications d'apprentissage automatique. L’apprentissage automatique ne se limite donc plus à Python.
Cet article explorera l'émergence de nouveaux langages d'apprentissage automatique, comment ils érodent la part de marché de Python et comment l'apprentissage automatique va changer à l'avenir.
Discutons de certains des inconvénients de Python auxquels les développeurs et les data scientists sont souvent confrontés.
Le développement Python est rapide, mais le calcul est très lent. Il utilise un interpréteur plutôt qu'un compilateur. Il est plus lent que les autres langages de programmation de science des données en raison de l'exécution de code séquentiel. Python est plus lent que C car C possède de nombreux outils et bibliothèques utiles. À moins de maîtriser le code vectoriel, vous remarquerez à quel point il est lent.
Cython est un sur-ensemble de Python. Il compile le code source Python en code du langage C. La chose la plus importante est de fournir une vitesse de calcul au niveau du langage C sans ressources informatiques supplémentaires. De nombreux programmeurs utilisent Cython pour écrire du code Python qui s'exécute aussi rapidement que le langage C, mais qui est plus simple et plus facile à lire.
Python présente d'énormes défauts dans sa conception, causés par son typage dynamique. Généralement, les variables typées dynamiquement dans les langages de programmation ne nécessitent pas de déclaration spéciale. Python utilise le typage duck, ce qui peut prêter à confusion. Dans le typage canard, la classe ou les propriétés d'un objet sont moins importantes que sa fonctionnalité. La saisie par canard ne nécessite pas de vérification de type. Vous pouvez également vérifier des processus ou des propriétés.
Python occupe beaucoup de mémoire en raison de sa structure énorme. De plus, les types de données Python sont flexibles en termes de consommation de mémoire. Il ne convient pas aux tâches gourmandes en mémoire. Ses types de données flexibles entraînent également une consommation de mémoire. Par conséquent, la gestion de la mémoire dans Python devient un défi lorsque vous créez des systèmes Python volumineux et de longue durée.
Python est moins efficace en termes de threads que d'autres langages. Bien que Python soit multithread, un seul thread peut s'exécuter à la fois. Par conséquent, Python multithread offre une efficacité de traitement monothread. Python dispose d'un verrou d'interpréteur global (GIL) qui permet à un seul thread de l'utiliser à la fois. Plusieurs threads ne peuvent être exécutés simultanément que si Python utilise des bibliothèques natives. De plus, Jython, un sur-ensemble de Python, peut implémenter le multithreading, contrairement à Python.
Python est vraiment génial. Mais il ne peut pas s'agir à la fois de The Flash et de L'Incroyable Hulk ! Quelqu'un pourrait avoir besoin de The Flash, quelqu'un pourrait avoir besoin de The Hulk. Les besoins des utilisateurs sont divers. De même, Python n’est pas conçu pour les applications mathématiques et scientifiques des données. Cela nécessite une bibliothèque tierce comme NumPy ou Tensorflow, spécialisée dans les algorithmes de deep learning. Par conséquent, les langages de programmation spécifiques aux données présentent des avantages par rapport à Python.
Par exemple, dans le monde de l'entreprise, l'apprentissage automatique nécessite rapidité et évolutivité pour réduire le temps d'exécution. Vous ne pouvez pas faire attendre les clients trop longtemps. Vous avez donc besoin de langages ML (General Purpose Functional Programming Languages) plus rapides pour fonctionner. Plus c'est rapide, mieux c'est.
Maintenant, Python est rapide, mais quoi d'autre peut être plus rapide que Python ? Oui, c'est Julia, ou Scala !
Dans ce cas, les data scientists préfèrent utiliser un langage de programmation différent de Python.
Il existe plusieurs alternatives Python qui fonctionnent aussi bien, voire mieux, que Python dans divers environnements d'application. Voici quelques alternatives à la science des données Python :
Julia est un nouveau langage de programmation dynamique de haut niveau, innovant, rapide et confortable. C'est un langage polyvalent capable d'écrire une variété d'applications. Il convient de mentionner qu’une grande partie de son écosystème de packages et de ses fonctionnalités est orientée vers le calcul numérique avancé, ce qui le rend idéal pour l’apprentissage automatique.
Julia est construite sur plusieurs langages, dont le langage C et des langages de classes dynamiques de haut niveau tels que Python, R et MATLAB. Julia s'appuie sur les types facultatifs, la syntaxe et les fonctionnalités de ces langages car l'objectif de Julia est de combiner leurs forces et d'éliminer leurs faiblesses.
Les créateurs de Julia voulaient développer un langage capable de gérer le calcul scientifique, l'apprentissage automatique, l'exploration de données, l'algèbre linéaire à grande échelle, le calcul distribué et parallèle aussi rapidement que le C. Cependant, ils ont finalement développé un langage plus rapide. Même si Python devient plus rapide, Julia le surpasse toujours.
Julia simplifie de nombreuses notations mathématiques pour l'apprentissage automatique. Il fournit divers packages de programmation GPU tels que ArrayFire, qui permet au GPU d'exécuter du code à usage général. Chaque package a son propre modèle de programmation, par exemple, NVIDIA a CUDA Jl, AMD a AMDGPU jl et oneAPI.
Les ingénieurs en machine learning peuvent déployer rapidement Julia dans de grands clusters, en bénéficiant de ses outils puissants tels que MLBase.jl, Flux.jl (deep learning), MLJ.j (machine learning général) et Knet.jl (deep learning). Flux est une bibliothèque d'apprentissage automatique profond à grande vitesse qui est préchargée avec des outils supplémentaires pour maximiser les capacités de Julia. De même, ScikitLearn.jl, TensorFlow.jl et MXNet.jl pour les applications ML sont inclus.
Julia est douée pour résoudre des problèmes informatiques complexes. Par conséquent, de nombreuses universités célèbres, notamment l’Université de Stanford et l’Université métropolitaine de Tokyo, proposent des cours Julia. Ses performances sont également très solides par rapport à Python.
De nombreux dirigeants de l'industrie comme Logan Kilpatrick pensent que Julia est l'avenir de l'apprentissage automatique et de la science des données.
Principales fonctionnalités de Julia :
ApacheSpark est un outil de streaming et de traitement de données en temps réel puissant et rapide. Scala Spark facilite les tâches complexes de cartographie, d'ETL et de traitement de données volumineuses. Scala permet aux utilisateurs d'implémenter de nouvelles fonctionnalités Spark en comprenant le code. La compatibilité de Scala avec Java permet aux programmeurs de maîtriser rapidement les concepts orientés objet.
SparkMLlib contient des algorithmes de haute qualité et d'excellentes performances dans Spark, ce qui en fait une bibliothèque d'apprentissage automatique évolutive. La classification, la régression, le clustering, le filtrage collaboratif et la réduction de dimensionnalité sont tous inclus dans la bibliothèque d'apprentissage automatique MLlib de Spark. De plus, Breeze, Spire, Saddle et Scalalab sont d'autres bibliothèques ML qui aident à créer de puissantes applications de traitement de données.
Apache Kafka est une plateforme de streaming d'événements distribués open source Avec la popularité de Python, Spark est également devenu populaire. Tout ce qui s'exécute lentement dans Scala Spark est voué à planter dans PySpark. De plus, vous pouvez utiliser la bibliothèque TensorFlow Scala pour créer un système de service adaptable et hautes performances pour les modèles d'apprentissage automatique.
Le typage statique de Scala est utile dans les applications complexes. Son environnement d'exécution JVM et JavaScript permet aux systèmes hautes performances d'accéder facilement aux bibliothèques. De plus, ses performances sont meilleures que celles de Python. Il se démarque également par rapport à Python.
Principales fonctionnalités de ScalaCertaines fonctionnalités de base de Scala permettent des calculs efficaces en science des données :
Scala est 10 fois plus rapide que Python possède un mécanisme d'inférence de type avancéLa documentation du langage MQL5 répertorie les fonctions, les opérations, les mots réservés, etc. De plus, il fournit des types de données tels que entier, booléen, littéral, chaîne, date et heure. Il a des structures et des classes complexes. De plus, la documentation comprend des définitions de classes de bibliothèque standard pour les stratégies de trading, les panneaux de contrôle, les effets visuels personnalisés, l'accès aux fichiers, etc.
De plus, MQL5 dispose de plus de 1 500 bibliothèques de codes sources pour le développement de nouvelles applications. Vous pouvez utiliser la bibliothèque ALGLIB qui contient un grand nombre de fonctions d'analyse numérique. De même, il existe la bibliothèque TimeSeries pour le traitement des séries chronologiques et la bibliothèque Fuzzy pour développer des modèles flous et diverses autres bibliothèques.
MQL5 est un langage de programmation puissant qui peut vous aider à créer des systèmes en temps réel et à fournir une aide visuelle à la prise de décision. MQL5 prend en charge les énumérations, les structures, les classes et les événements. En augmentant le nombre de fonctions principales embarquées, les programmes MQL5 peuvent communiquer avec les DLL.
MQL5 a une syntaxe similaire à celle du C++, ce qui facilite la conversion de programmes écrits dans différents langages de programmation en programmes MQL5. Par conséquent, vous pouvez obtenir la même efficacité que le C++ lorsque vous utilisez l’analyse de données, l’intelligence artificielle ou des outils financiers comme robot de trading.
Principales fonctionnalités de MQL5
Certaines fonctionnalités de base de MQL5 permettent des calculs efficaces de science des données :
Si vous souhaitez mettre en œuvre du calcul multi-processus et avez besoin d'une vitesse de calcul très élevée, vous pouvez choisir Julia. C'est le plus rapide des trois. D'un autre côté, si vous travaillez sur un grand projet, Scala devrait être un meilleur choix car il fait le travail. Si vous êtes intéressé par les instruments financiers, MQL5 est le meilleur choix.
De même, chaque langage de programmation a ses propres caractéristiques et domaines d'expertise. Il est donc préférable de choisir une langue qui répond à vos exigences et spécifications.
5.
RésuméAinsi, les langages de programmation émergents gagnent des parts de marché et se développent dans le domaine de l'apprentissage automatique. Espérons qu’ils deviendront eux aussi plus courants dans les prochaines années.
Lien original : https://hackernoon.com/not-only-python-problems-errors-and-alternatives
Présentation du traducteurLiu Tao, rédacteur de la communauté 51CTO, personne en charge de la détection et du contrôle en ligne des un grand système d'entreprise central, dont les principales responsabilités sont d'examiner strictement l'acceptation en ligne du système des analyses manquées, des tests d'intrusion, des vérifications de base et d'autres travaux de détection. Il possède de nombreuses années d'expérience en gestion de la sécurité des réseaux, de nombreuses années de développement et de défense PHP et Web. expérience, expérience d'utilisation et de gestion de Linux, et possède une riche expérience dans l'audit de code, les tests de sécurité des réseaux et l'exploration des menaces. Maîtrise de l'audit SQL, de la détection automatisée SQLMAP, de l'audit XSS, de l'audit Metasploit, de l'audit CSRF, de l'audit WebShell, de l'audit Maltego et d'autres technologies sous Kali.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!