Улётные пакеты Julia для машинного обучения — мечта программиста! |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-06-21 19:00 Несмотря на то, что Julia все еще относительно молодой и перспективный язык, иногда он просто поражает своей не по годам зрелой экосистемой. Особенно это проявляется в области машинного обучения. И, хотя другие языки, например Python, могут похвастаться большим количеством проработанных пакетов для этой области, соответствующие им аналоги в Julia определенно заслуживают нашего внимания. Во-первых, эти пакеты написаны на быстром высокоуровневом языке, а во-вторых, они представляют собой великолепные компоненты ПО, простые в применении, независимо от того, из какого языка они используются. Многие из этих пакетов задействуют преимущества выразительного синтаксиса Julia, а также доступные в его базе функции для выполнения схожих задач с разными типами при помощи полиморфной диспетчеризации. Поэтому переключаться между пакетами становится проще простого, чего обычно не встретишь в других языках программирования. А еще поражает тот факт, что многие пакеты МО в Julia не так уж велики, поскольку зачастую нет необходимости писать лишний код для обработки статистики. Flux Во главе нашего списка располагается основной пакет для машинного обучения в Julia — Flux.jl. В данном языке он обычно используется как уровень абстракции для создания нейронных сетей. Flux.jl входит в число моих любимых пакетов, и он был одним из первых, с которыми я познакомился, начиная работу с Julia. Его огромным преимуществом является невероятно маленький размер. Он обеспечивает легковесные абстракции поверх и без того фантастической вычислительной базы кодаAD и GPU. Кстати, я ведь еще вам не сказал, что у Flux нереальная поддержка CUDA! Параллельное вычисление — это всегда большой плюс, но благодаря дополнительной невероятной работе, проделанной с JuliaGPU, сочетание видеокарты Nvidia и Flux стало ничем иным, как воплощенной мечтой инженера по машинному обучению. Легковесность Flux позволяет прекрасно использовать его на серверах, так как он не займет много места, и его запросто можно поместить в крошечные виртуальные среды при помощи Pkg. Подводя итоги этого раздела, отметим также, что Flux портативен. Он на 100% написан на Julia, что является несомненным дополнительным бонусом, поскольку вам не придется использовать чужой синтаксис или пакеты вроде CSyntax для работы с ним. Merlin.jl Представляю вашему вниманию Merlin — еще один фреймворк для глубокого обучения, предназначенный для создания нейронных сетей. Merlin.jl является пакетом, который многие разработчики могли упустить из виду. А зря, поскольку это просто необыкновенный инструмент, который помог мне сэкономить так много времени в самых разных ситуациях. Подобно Flux, Merlin относительно легкий и написан на чистом Julia. При выполнении многих операций он опережает Flux, но это совсем не означает, что он всегда будет быстрее. Как и в случае с Flux, Merlin имеет встроенную GPU поддержку с CUDA. Но это не всё. Модели Merlin обычно отличаются от моделей Flux способностью к более быстрому развертыванию. Я не утверждаю, что процесс развертывания Flux сопряжен с большими трудностями, но тем не менее это нелегко. Поэтому, если вы планируете развернуть API, использующее нейронную сеть, при помощи Genie и Julia, я бы посоветовал выбрать Merlin. Помимо всех выше перечисленных превосходных достоинств, он также включает маленькую дистрибутивную библиотеку. KNet.jl Знакомьтесь, Knet, еще один подобный фреймворк, но с небольшой особенностью. Он был создан в университете Коч (Стамбул). Вследствие чего, данный пакет, похоже, намного лучше поддерживается, чем большинство его аналогов в нашем списке, по обыкновению настраиваемых горсткой энтузиастов. Также в отличие от Flux и Merlin, пакет Knet немного тяжелее. Кроме этого, он написан не чисто на Julia, но и на других языках, таких как C и MATLAB, выполняющихся под кодом Julia. Однако следует отметить, что только очень малая часть Knet, а именно 1,8%, написана на C и MATLAB. Остается добавить, что из всего нашего списка Knet лучше подойдет новичкам, поскольку очень прост в использовании. Признаться, были у меня сомнения — добавлять Lathe в этот список или нет, из-за некоторого предубеждения относительно него, поскольку Я творец. Однако было бы глупо не внести его в список, ибо он предлагает так много возможностей. Прежде всего, Lathe сопровождается довольно большой библиотекой статистики, включающей хи-квадрат тесты, байесовскую статистику, t-тесты, f-тесты и даже малоизвестные тесты по критерию знаков. Более того, в него также включена проверка с модулем статистики, в котором есть метрики точности для непрерывных и категориальных прогнозов. И наконец, Lathe.jl включает небольшую скромную библиотеку дистрибутивов. Lathe также содержит такое количество инструментов препроцессинга, какое вы вряд ли могли ожидать от незрелого пакета. В качестве хороших примеров можно отметить масштабные преобразователи признаков, разделение тестирования и обучения, а также категориальное кодирование. Кроме всего перечисленного, Lathe содержит краткий, но замечательный модуль для загрузки данных в Julia. Так что, если понадобиться загрузить в него различные изображения или другие аналогичные данные, можете смело использовать эти инструменты. В довершение всего у Lathe есть постоянно расширяющаяся библиотека модулей МО и даже поддержка для создания сверточных нейронных сетей. Он содержит конвейерный фреймворк, который сильно упрощает развертывание модели Lathe с сериализацией JLD2. Данный пакет также написан на чистом Julia и имеет довольно основательную документацию (хотя грядет ее значительное обновление в версии 0.1.2, в котором будут пересмотрены строки документации). Можно сказать, что если Flux — это ничто иное, как TensorFlow для Julia, то Lathe — это ее Sklearn. А значит, он весьма содержателен и предоставляет все необходимые инструменты для работы. Более того, благодаря простоте в использовании, Lathe будет легко освоить даже начинающим. Ознакомиться с этим пакетом вы можете здесь. MLBase.jl MLBase.jl является еще одним модулем Julia, в основе которого лежат принципы, схожие с Sklearn в Python. Он включает инструменты для обобщенной обработки данных, такие как масштабные преобразователи признакови кодировщики, а также оценочную классификацию и проверку. У этого пакета есть еще одна уникальная и полезная возможность — настройка модели. Настройка модели MLBase позволит вам невероятно быстро оптимизировать гиперпараметры должным образом. Как вы уже, возможно, догадались, MLBase.jl полностью написан на Julia. И это самый легкий пакет в нашем списке, к тому же он прост в использовании, так что может стать еще одной находкой для новичков. Вот и состоялось знакомство с одними из лучших модулей машинного обучения, которые есть в распоряжении у каждого разработчика Julia. Учитывая, что некоторые из них предназначены для разных целей, оптимальный план действий будет состоять в подборке необходимых возможностей из каждого пакета. Выбирая модуль для начала работы, можете рассмотреть:
После выбора нужного пакета желательно определиться, для какой цели он вам нужен, так как каждый из модулей обладает своими уникальными возможностями и в зависимости от вашей ситуации может оказаться вам полезен или нет. И хотя экосистема Julia не такая сформировавшаяся, как у гиганта Python, но тем и интересней работать с этим языком. Многие люди внесли неоценимый вклад в его развитие и, что наиболее важно, в науку о данных в целом. И пусть у Julia нет такого немыслимого количества потрясающих модулей, как у других языков, но те пакеты, которыми он обладает, уже хорошо разработаны и только в начале своего пути к совершенствованию. Источник: m.vk.com Комментарии: |
|