Уже створена величезна кількість алгоритмів вирішення задач машинного навчання і тому немає великого сенсу створювати їх заново. Знати як вони працюю, звичайно ж, потрібно, але замість створення власноруч можна використати уже розроблені і протестовані бібліотеки.
Хоча машинне навчання – це прикладна наука, оскільки саме явище МН виникло внаслідок того, що людині потрібно використовувати для вирішення прикладних задач, з теоретичної точки зору нашими інструментами в МН є алгоритми.
Однією з мов програмування, яка максимально використовується для вирішення прикладних задач, є мова Python. Ця мова має декілька переваг. Вона досить проста у вивченні і, як правило, це мова, яка потребує низького рівня входу.
Людина, яка має базові знання з теорії алгоритмів і математики, досить просто може освоїти базовий функціонал, методи і синтаксис для того, щоб вирішувати прикладні задачі.
Саме на базі цієї мови реалізована велика кількість бібліотек, які надають у зручному виді більшість доступних алгоритмів.
NumPy. Scikitlearn
Більшість із цих бібліотек використовують бібліотеку NumPy. Це бібліотека, яка дозволяє швидко і ефективно працювати з числовими даними, матрицями, таблицями чисел в різних форматах, проводити велику кількість типових операцій, що потрібні в процесі вирішення прикладних задач МН.
Загалом для МН існує декілька базових бібліотек на Python, які мають досить велику перевагу у порівнянні з бібліотеками інших мов програмування. І основна з них: дуже детальна і якісна документація. Досить часто бувають ситуації, коли ми маємо хороші алгоритми, але не маємо документації. І потрібно витратити багато часу на розуміння, як працювати з даною реалізацією, що роблять методи тощо.
Одна з бібліотек з чудовою документацією, яка реалізує більшість типових методів МН є scikit-learn. В даній бібліотеці реалізовані десятки алгоритмів для задач кластеризації, регресії, класифікації, методу опорних векторів, лінійної та логістичної регресія та десятків інших.
Pandas
Наступною із дуже зручних бібліотек всередині мови Python, які допомагають працювати з великою кількістю табличних даних (досить часто тренувальні і тестувальні вибірки виглядають, як .csv-таблиці з сотнями тисяч і мільйонами рядків і колонок параметрів) є бібліотека Pandas. Вона дозволяє дуже швидко завантажувати дані, препроцесити їх (готувати у відповідний формат), щоб у зручному вигляді відправляти на опрацювання нашим алгоритмом, який ми, наприклад, вибрали з бібліотеки scikit-learn.
Theano. TensorFlow. CUDA.
Одна із досить поширених бібліотек низькорівневих операцій для реалізації алгоритмів НМ – бібліотека Theano. Вона реалізує комплексні матричні мультиплікації, швидкі методи згортки з множенням, вичленовуванням, методи регресії і всю backend-логіку роботи нейронних мереж.
Одним із ключових бонусів таких бібліотек є те, що окрім CPU- реалізації (тобто реалізації роботи алгоритму на процесорі), бібліотеки типу Theano або TensorFlow (від Google) є open source, тобто з відкритим кодом (можна його подивитися чи дописати модулі, яких Вам не вистачає).
CUDA – набір бібліотек, реалізований компанією NVidia, які дозволяють ефективно і швидко проводити обчислення на її відеокартах.
Keras. Anaconda Python
Окрім backend-реалізації нейронних мереж таких бібліотек, як Theano або TensorFlow, зараз зростає величезна кількість високорівневих методів описання НМ. Це пов’язано з тим, що попри те, що в Theano реалізована велика кількість backend-логіки, тобто всі елементи-конструктори, з яких ми можемо зібрати все, що нам заманеться, тим не менше досить часто нам потрібно заново реалізовувати певні типові конструкції і послідовності, наприклад, конволютивних мереж з типовими рівнями активації.
Тому для спрощення роботи існує вже декілька десятків високорівневих надбудов над цією бібліотекою, які дозволяють описати архітектуру і запустити тренування НМ з 15 шарів, яка показує результати на рівні найкращої НМ зразка 2013 року на конкурсі ImageNet. Весь код такої НМ, описаний на рівні високорівневого API, буде виглядати як 20 рядків коду, з яких 16 рядків – ініціалізація нашої мережі, а решта – запуск тренування і збереження.
Такої лаконічності в ініціалізації НМ можна досягнути, використовуючи бібліотеку Keras. Це бібліотека, яка одночасно дозволяє і використовувати або backend бібліотеки Theano, або backend бібліотеки TensorFlow. Оскільки основна логіка зберігається, а відрізняються методи реалізації, то високорівневу структуру наших НМ ми можемо описувати на високорівневому API, а вже в залежності від потреби змінювати backend, на якому це все обчислюється – на процесорі чи відеокарті
Anaconda Python – це повністю налаштоване середовище програмування, в якому попередньо установлені десятки і сотні бібліотек, версії яких не конфліктують між собою.
Посилання на конспект з детальним описом бібліотек.