Машинное обучение? Что это такое?
Если вы не жили под камнем все это время, вы, вероятно, слышали такие слова, как машинное обучение (ML) и искусственный интеллект (AI). Даже если вы не очень ориентированы на науку, вы, вероятно, видели рекламу Microsoft по телевидению и в Интернете, где Common рассказывает обо всех удивительных вещах, которые делает Microsoft.
По правде говоря, почти все использовали машинное обучение и искусственный интеллект в какой-то момент своей жизни. Поцарапайте это, каждый использует ML и AI каждый день в своей жизни. От того, чтобы попросить Сири и Алексу сыграть какую-нибудь песню, до использования навигационных приложений на телефоне, чтобы получить самый быстрый путь к работе, — это все ML и AI.
Но как мы определяем эти два термина? Давайте сосредоточимся на ML, так как это основная тема этой статьи. Проще говоря, машинное обучение — это:
Область исследований, которая позволяет компьютерным системам что-то делать, не давая им никаких конкретных инструкций.
Как разработчик, вы должны писать код определенным образом. Ваш клиент или менеджер говорит, что они хотят, чтобы желаемый результат был, и вы пытаетесь написать некоторый код, который даст вам этот результат. Но в машинном обучении вы знаете только проблему, которую нужно решить! Вы «учите» свой компьютер нескольким вещам, а затем бездельничаете и смотрите, какие поразительные результаты вы получаете от системы!
Вопрос, на который нужно ответить: как мы можем заниматься машинным обучением? Программисты Python используют такие пакеты, как scikit-learn и Google удивительно TensorFlow выполнять машинное обучение. Но в прошлом году (2018) Google выпустил версию TensorFlow на JavaScript, элегантно названную TensorFlow.js !
Но зачем заниматься машинным обучением на JavaScript? Ну, во-первых, способ машинного обучения на Python требовал от разработчиков держать код машинного обучения на сервере, а затем использовать JavaScript, чтобы позволить пользователям получать доступ к моделям на клиенте. И тут мы сталкиваемся с потенциальной проблемой. Если ваша модель машинного обучения становится слишком популярной и многие пользователи хотят получить к ней доступ, есть большая вероятность, что ваш сервер может выйти из строя!
Но если мы используем машинное обучение, мы не только останемся в среде JavaScript как для кода машинного обучения, так и для кода пользовательского интерфейса, модель останется на стороне клиента! Кроме того, модели машинного обучения в основном используются финансовыми компаниями. Таким образом, модель ML на стороне клиента будет означать, что ваши данные остаются конфиденциальными.
Давайте напишем некоторый код!
Теперь у вас есть некоторые базовые знания о ML, и почему делать это на JavaScript может быть хорошей идеей. Но ML — одна из тех вещей, которые вы поймете лучше, попробовав это. Если вы хотите узнать больше о машинном обучении, прочитайте этот пост, который я написал недавно:
Глубокое обучение с React Native
Вокруг таких тем, как Искусственный интеллект (ИИ), всегда было много волнений. Когда кто-то упоминает .
medium.com
В этом разделе мы создадим приложение для машинного обучения с React, которое может выполнить очень хорошую классификацию изображений.
SideBar:Процесс машинного обучения состоит из двух этапов: обучение и тестирование. Обучение включает в себя предоставление огромного количества данных для модели, которую модель затем обработает и распознает различные шаблоны, которые модель затем будет использовать для будущих прогнозов.
Поскольку мы создаем модель классификации изображений, нам нужно отправить тысячи изображений в модель для обработки, прежде чем мы сможем делать какие-либо прогнозы. Изображения должны быть каким-то образом связаны друг с другом, и, честно говоря, у меня не так много картинок (я застенчивый человек). Кроме того, машинное обучение на JavaScript все еще для меня новость. Поэтому в качестве ярлыка я собираюсь использовать одну из предварительно обученных моделей.
Прежде чем мы сможем начать кодирование, убедитесь, что в вашей системе установлены следующие компоненты:
- Узел — Нам понадобится это для установки разных пакетов
- Редактор кода — подойдет любой хороший редактор. Мне лично нравится пользоваться VSCode
Следующим является создание шаблонного приложения React Для этого откройте командный терминал и выполните следующую команду:
$ npx create-react-app ml-in-js
Эта команда создаст папку с именем ml-in-js и создайте стартовое приложение в вашей системе. Затем вернитесь к своему командному терминалу и выполните следующие команды:
Первая команда довольно проста. Настоящее волшебство происходит во втором. npm run start Команда создает локальный уровень развития вашей системы и автоматически открывает его в браузере следующим образом:
Это стартовое приложение не имеет понятия, что такое машинное обучение или Tensorflow. Чтобы решить эту проблему, нам нужно установить пакет Tensorflow.js. Для разработчиков Python вам нужно будет сделать pip install tensorflow один раз в вашей системе и свободно использовать пакет в любом месте и в проекте. Но когда дело доходит до JavaScript, вам нужно запустить npm install Команда для каждого проекта.
Но вместо того, чтобы устанавливать библиотеку Tensorflow.js (TFJS) в приложении, мы установим еще одну библиотеку под названием ML5.js. Эта библиотека похожа на лучшую версию TFJS, которая значительно упрощает нам машинное обучение на стороне клиента. Итак, давайте установим эту библиотеку так:
Если вы хотите убедиться, что библиотека была успешно установлена, перейдите к App.js файл в src папку и напишите следующий код:
import React, from 'react';
import * as ml5 from 'ml5';export default class App extends Component render() return (
)
>
>
Если вы вернетесь в браузер, вы увидите большой0.4.1напечатано на экране. Это число может немного отличаться для вас в зависимости от последней версии ML5.js. Пока вы видите число, напечатанное на экране, вы можете быть уверены, что ваша библиотека ML5 была успешно установлена.
С этим мы закончили с установочной частью. Теперь нам нужно создать функцию, которая может взять изображение и классифицировать его, используя предварительно обученную модель. Для этого напишите следующий код внутри App составная часть:
classifyImage = async () => const classifier = await ml5.imageClassifier('MobileNet')
this.setState()
const image = document.getElementById("image")
classifier.predict(image, 1, (err, results) => this.setState( predictionLabel: results[0].label,
predictionConfidence: results[0].confidence,
predicted: true
>)
>)
>
Здесь у нас есть асинхронная функция classifyImage , Внутри этой функции мы сначала определяем наш классификатор изображений, загружая MobileNet данные в качестве учебного набора. Когда этот классификатор готов, мы устанавливаем ready государство для true , Затем мы выбираем image вставлен пользователем и передать его в classfier и запустить predict функция. Мы сохраняем метку самого высокого прогноза и уровень доверия в state объект.
Весь наш файл App.js будет выглядеть примерно так:
Время проверить модель. Для этого я дам следующее изображение для приложения:
Когда я нажимаю на Classify кнопка, приложение запускает classifyImage функции и через некоторое время вы получите следующий результат:
The app is 63.99456858634949% sure that this is bucket
Не то, что я ожидал. Причиной этого неверного результата может быть ряд вещей. Наиболее важным из них является то, что MobileNet не является подходящим набором данных для классификации этого изображения.
Давайте попробуем другое изображение. Может быть, животное
Нажав на Classify кнопку снова, и я получаю 🤞:
The app is 90.23570418357849% sure that this is Border collie
Вот Это Да! 90% уверенности, что на изображении есть бордер-колли, который относится к типу собак!
Завершение
Если вы до сих пор оставались со мной, то вы только что сделали машинное обучение на JavaScript! Давай, погладь себя по спине!
Но мы с вами все еще далеки от того, чтобы быть экспертами по ОД. В этой статье мы провели тестовую часть машинного обучения и использовали предварительно обученную модель. Настоящее веселье начинается, когда вы берете свои собственные необработанные данные и пытаетесь использовать их для обучения своих данных.
Это то, что я сейчас попытаюсь сделать. Так пожелай мне удачи! Если мне это удастся, я напишу свою следующую статью об этом.
Как всегда, я хотел бы поблагодарить вас всех за чтение моих длинных статей. Я все еще новичок в машинном обучении в JavaScript. Поэтому, если вы считаете, что я допустил какую-либо ошибку в этом посте, или если бы я мог сделать что-то по-другому, пожалуйста, прокомментируйте это.
Вы можете взглянуть на весь исходный код React App здесь: