‫Dans cette conférence, nous allons discuter d'une question pratique, nous allons couvrir une question que je
‫reçois très souvent des débutants, c'est pourquoi devons-nous faire toute cette programmation et ces mathématiques?
‫Pourquoi ne pouvons-nous pas simplement utiliser une bibliothèque?
‫J'entends souvent que pour être soi-disant pratique, il faut utiliser des bibliothèques.
‫Maintenant, tout d'abord, commençons par être pratique, c'est une bonne chose.
‫Mettre toute cette théorie en pratique est évidemment le but final.
‫Il y a deux problèmes avec cette question pour débutant.
‫Premièrement, les gens utilisent souvent cela comme une excuse pour le fait qu'ils n'ont pas la capacité de faire le calcul
‫ou d'écrire le code.
‫C'est donc très important.
‫Une bibliothèque peut remplacer un manque de capacités et de compétences.
‫Numéro deux, il n'y a pas de bibliothèques qui correspondent à votre cas d'utilisation.
‫Donc, ce que vous demandez n'existe même pas.
‫Une vraie question pratique est que si vous voulez demander quelque chose, vous devez savoir ce que
‫vous demandez en premier lieu.
‫Et beaucoup de gens qui posent cette question ne le font tout simplement pas.
‫Le reste de cette conférence expliquera pourquoi.
‫OK, alors pourquoi n'y a-t-il pas de bibliothèques qui nous aideront à implémenter ces algorithmes d'une manière soi-disant
‫pratique?
‫Eh bien, pensons au code que nous venons d'écrire.
‫Quelle part a été consacrée à l'algorithme lui-même?
‫Comptons.
‫Nous avons une ligne de code à échantillonner à partir de notre distribution postérieure.
‫Nous avons deux lignes de code pour mettre à jour la distribution postérieure.
‫Et enfin, nous avons encore une ligne de code pour sélectionner un bandit en choisissant l'Amax sur les échantillons.
‫Au total, cela fait quatre lignes de code.
‫Demandons-nous, avons-nous besoin d'une bibliothèque pour quatre lignes de code?
‫En réalité, nous n'avons pas besoin d'une bibliothèque pour seulement quelques lignes de code.
‫La plupart du travail que vous devez faire lors de la mise en œuvre de cet algorithme dans le monde
‫réel est en fait en dehors de cette soi-disant bibliothèque et a plus à voir avec l'ingénierie backend afin de rendre cette
‫conférence complète.
‫Je vais expliquer en quoi consiste cette ingénierie backend.
‫Même si certains d'entre vous ne sont peut-être pas de retour dans les ingénieurs, j'espère que cela vous aidera au
‫moins à comprendre pourquoi l'idée de chercher une bibliothèque pour faire ce travail n'a aucun sens.
‫Tout d'abord, considérons que beaucoup de remises en service n'utilisent pas Python, Python est un langage lent.
‫Certaines entreprises utilisent Python comme back-end, mais ce n'est pas aussi omniprésent que pour, par exemple, la science des données et
‫l'apprentissage automatique.
‫De nombreuses entreprises utilisent d'autres langages et frameworks tels que Ruby on Rails, Java, Scala, Erlang, Go
‫et C ++.
‫Et dans beaucoup de ces langages, faire de la science des données n'est pas une chose populaire.
‫Il est donc peu probable que vous trouviez quelque chose comme une bibliothèque de statistiques bayésiennes.
‫Cela n'existe tout simplement pas.
‫Mais encore une fois, vous n'avez de toute façon pas besoin d'une bibliothèque pour quelques lignes de code.
‫Alors, quelles sont les tâches à accomplir?
‫Tout d'abord, vous allez avoir besoin d'un magasin de données centralisé, qu'il s'agisse d'une base de données réelle ou d'un magasin de valeurs
‫de clé, qui contient l'ensemble de votre bande aux paramètres de bras.
‫Contrairement à nos exemples de jouets, cela n'existera pas en mémoire dans le monde réel, vous pourriez avoir 10 ou
‫20 serveurs dans le monde entier.
‫De toute évidence, vous ne pouvez pas garder les données sur chaque machine synchronisées et répliquées.
‫Exactement sur tous ces serveurs.
‫Vous devez avoir une base de données quelconque.
‫En outre, vos données peuvent être stockées dans des fichiers journaux si vous ne souhaitez pas les traiter en temps réel en
‫raison de problèmes de performances.
‫Vous devrez donc peut-être avoir un travail bâclé qui ingère ces fichiers journaux périodiquement, puis utilise ces données pour
‫mettre à jour les paramètres de votre modèle dans un paramètre hors ligne.
‫Ce serait un programme informatique entièrement distinct vivant sur des machines séparées.
‫Il est donc clair qu'une seule bibliothèque sur une seule machine ne fera pas le travail, vous allez
‫avoir vos employés bâclés et vos serveurs Web, et ils sont tous deux responsables de deux choses
‫totalement différentes.
‫En fait, vos meilleurs emplois et vos services Web peuvent même ne pas être écrits dans le même langage de
‫programmation en premier lieu.
‫Alors, quelle est la place d'une bibliothèque dans cette architecture?
‫En réalité, un code comme celui-ci n'est pas adapté à une bibliothèque.
‫Les bibliothèques dont vous devez vous soucier peuvent être les suivantes.
‫Tout d'abord, vous souhaitez disposer d'une infrastructure de serveur Web.
‫De toute évidence, cela relève davantage des responsabilités de l'équipe d'ingénierie backend que de l'équipe
‫de data scientist.
‫C'est peut-être Jango ou Ruby on Rails ou le framework actif C ++.
‫Ensuite, vous devez déterminer quelle base de données vous allez utiliser qui pourrait être des préparations MySQL postgrades
‫ou Memcache.
‫Vous aurez également besoin d'une bibliothèque dans votre langage de programmation qui se connecte à cette base de données, et si
‫vous traitez de grandes quantités de données dans vos travaux par lots, vous devrez peut-être effectuer ces travaux sur un
‫cluster de machines.
‫Dans ce cas, vous pouvez utiliser une bibliothèque comme Apache Spark.
‫C'est donc le genre de chose dont vous devez vous soucier en termes de bibliothèques, en comparaison,
‫les lignes de code réelles qui implémentent votre algorithme Bendit sont globalement minuscules.
‫J'espère qu'il est clair qu'une bibliothèque pour faire une telle tâche dans ce contexte n'aurait pas de sens.