В прошлом году Apple запустила Core ML — переход в мир машинного обучения для разработчиков Apple. До этого мы уже использовали машинное обучение с такими технологиями, как автозамена, Siri и интеллектуальная клавиатура, но Core ML предоставил разработчикам новый уровень мощности и гибкости. Во время WWDC 18 Apple анонсировала Core ML 2, и в этой статье вы узнаете, что нового.
С одного взгляда
Прежде чем мы углубимся в изменения, которые вносит Core ML 2, давайте кратко обсудим, чем на самом деле является Core ML. Более конкретно, давайте немного узнаем о нюансах машинного обучения. Core ML — это платформа, которая позволяет разработчикам iOS и macOS легко и эффективно внедрять машинное обучение в свои приложения.
Что такое машинное обучение?
Машинное обучение — это использование статистического анализа, чтобы помочь компьютерам принимать решения и делать прогнозы на основе характеристик, найденных в этих данных. Другими словами, это действие, когда компьютер формирует абстрактное понимание существующего набора данных (называемого «моделью») и использует эту модель для анализа новых данных.
Как это работает?
Используя низкоуровневые технологии на платформах Apple, Core ML может предложить быстрые и эффективные инструменты машинного обучения для внедрения в ваши приложения. Это работает с использованием Metal и Accelerate, чтобы в полной мере использовать преимущества графического процессора и процессора на устройстве, обеспечивая плавную скорость. Это также позволяет машинному обучению работать на устройстве вместо необходимости доступа в Интернет для каждого запроса.
1. Прогнозирование партии
Предсказывает выходные значения функций из заданного пакета значений входных объектов.— Документация Apple
Пакетный прогноз стоит отметить, так как у Apple его не было в первой версии Core ML. На первый взгляд, пакетное прогнозирование позволяет вам запускать модель на основе набора данных и получать набор выходных данных.
Если у вас была модель Core ML для классификации изображений по тому, содержат ли они цветы или деревья, и вы хотели классифицировать несколько изображений, скажем, 300, вам нужно было бы написать for-loop
для перебора каждого из изображений и регулярно классифицировать каждое из них, используя твоя модель
Однако в Core ML 2 мы получаем то, что Apple называет Batch Predict API. , Это позволяет нам делать несколько предсказаний для набора данных без использования циклов for. Если вы хотите использовать его, вы просто позвоните:
1
|
modelOutputs = model.prediction(from: modelInputs, options: options)
|
modelInputs
этом примере modelInputs
— это набор входных данных, на которых вы хотели бы запустить свою модель, но мы не будем рассматривать options
описанные в этой статье. Если вы хотите узнать больше о том, как использовать Batch Predict API, смело обращайтесь к документации Apple . Поначалу это может показаться не таким уж большим делом, но на самом деле это повышает производительность модели на целых 30%!
2. Модели обучения
Используйте Create ML со знакомыми инструментами, такими как Swift и игровые площадки macOS, для создания и обучения пользовательских моделей машинного обучения на вашем Mac. Вы можете обучать модели выполнению таких задач, как распознавание изображений, извлечение значения из текста или поиск связей между числовыми значениями. — Документация Apple
Хотя Core ML всегда была мощной платформой, создавать собственные модели не всегда было легко. В прошлом было почти необходимо знать Python, чтобы создавать даже самые простые модели. С Core ML 2 мы также получили Create ML, простой способ для вас создавать собственные модели Core ML.
Однако создание ML не ограничивается только моделями на основе изображений. Даже не создавая настоящий проект Xcode, вы можете тренировать различные типы моделей на игровой площадке. Кроме того, вы также можете протестировать эти модели и экспортировать их для использования в любом приложении.
Классификатор изображений
С помощью шаблона, такого как сверточная нейронная сеть, Create ML может помочь вам создать собственный классификатор изображений для определения определенных характеристик данного изображения. Например, вы можете научить его различать дерево и цветок.
Или вы можете использовать его для более сложных приложений, таких как определение типа растения или конкретной породы собак. В зависимости от количества изображений точность увеличивается, как и в любой модели машинного обучения.
Прочтите мой пост здесь на Envato Tuts +, чтобы узнать, как создать классификатор изображений в Create ML .
Текстовый классификатор (НЛП)
В дополнение к тому, что Create ML является инструментом классификации изображений, он также может помочь в создании текстовых моделей машинного обучения. Например, вы можете создать модель, которая сообщает вам настроение в определенном предложении. Или вы можете создать спам-фильтр, который использует характеристики текста (т.е. используемые слова), чтобы проверить, является ли строка «спамом» или «не спамом».
Классификатор табличных данных
Иногда при классификации данных могут быть полезны несколько точек данных или функций. Электронные таблицы являются очень ярким примером этого, и Create ML может также создавать модели Core ML на основе файлов CSV .
Теперь ваши таблицы Excel можно использовать для создания модели, которая прогнозирует фондовый рынок на основе моделей покупки и продажи; или, возможно, он предсказывает жанр книги, основываясь на имени автора, названии и количестве страниц.
3. Уменьшение размера модели
Объединение вашей модели машинного обучения в ваше приложение — это самый простой способ начать работу с Core ML. По мере того, как модели становятся более продвинутыми, они могут становиться большими и занимать значительное место для хранения. Для модели на основе нейронной сети рассмотрите возможность уменьшения занимаемой площади за счет использования более точного представления для ее весовых параметров. — Документация Apple
С появлением Core ML 2 и iOS 12 разработчики теперь могут уменьшить размер своих уже обученных моделей более чем на 70% по сравнению с первоначальным размером. Размер модели может быть реальной проблемой — вы могли заметить, что некоторые из ваших приложений становятся все больше и больше с каждым обновлением!
Это неудивительно, потому что разработчики постоянно совершенствуют свои модели машинного обучения, и, конечно, как указано в документации для разработчиков, более продвинутые модели занимают больше места для хранения, что делает реальное приложение больше. Если приложение становится слишком большим, некоторые пользователи могут прекратить загрузку обновлений и могут прекратить использование этих приложений.
К счастью, теперь у вас есть возможность определить модель, что позволяет значительно уменьшить ее размер в зависимости от качества, с которым вы готовы отказаться. Квантование не единственный путь; Есть и другие способы!
Преобразовать в половинную точность
Core ML Tools предоставляет разработчикам способ уменьшить вес до половины. Если вы еще не знаете, какой вес , все в порядке; все, что вам нужно знать, это то, что они напрямую связаны с точностью модели. Как вы уже догадались, половинный размер равен половинной точности.
Модели до Core ML 2 имели возможность быть представленными только с 32 битами, что отлично для точности, но не идеально для размера хранилища. Половинная точность уменьшает это значение до 16 бит и может значительно уменьшить размер модели. Если вы хотите сделать это с вашими моделями, посетите документацию для всестороннего руководства.
Скачать и скомпилировать
Замечательно иметь ваши модели на вашем устройстве, потому что это повышает безопасность и производительность, и это не зависит от надежного подключения к Интернету. Однако, если ваше приложение использует несколько моделей для создания единого интерфейса для пользователя, все эти модели могут не понадобиться сразу.
Вы также можете загружать эти модели по мере необходимости и компилировать их на месте, вместо того чтобы связывать их с вашим приложением и увеличивать объем пространства, которое ваше приложение занимает на устройстве вашего пользователя. Вы даже можете загрузить эти модели и временно сохранить их на устройстве вашего пользователя, чтобы избежать загрузки одной и той же модели несколько раз.
Вывод
В этой статье вы узнали о новейших и лучших технологиях Core ML и о том, как они соотносятся с версией API предыдущего года. Пока вы здесь на Envato Tuts +, посмотрите наш другой замечательный контент для машинного обучения!