Интеллектуальные системы на JavaScript
Сергей Мелашич
Agilie
Сергей
Мелашич
web разработчик компании Agilie
SergeyMell
Seroga.Mell
Sergey Melashych
sergey.mell@agilie.com
Тренды Web разработки
JavaScript
Single Page Applications
Ecommerce
Artificial intelligence
Blockchain
Internet of Thing
Motion UI
Progressive Web Apps
Достижения ИИ




Компании, вкладывающие в ИИ







Искусственный интеллект – область компьютерных наук, кредо которой: "Сомневаешься? Используй поиск по графу"
Джаред Колфлешм
Искусственный интеллект – область компьютерных наук, направленная на создание чрезвычайно сложных программ, которые не работают
Фрэнк Брилл
Определение ИИ
Определение ИИ
Искусственный интеллект можно определить как науку о решении компьютерами таких задач, решение которых человеком требует применения интеллекта.
Алан Тьюринг
Тест Тьюринга
Неразумное
поведение
Разумное
поведение
Тест
Тьюринга
Задачи ИИ
Доказательство теорем
Распознавание образов
Моделирование игр
Экспертные системы
Робототехника

Еще немного определений
Artificial Intelligence
Machine Learning
Deep Learning
Машинное обучение – статистические методы, позволяющие компьютерам «учиться», не будучи явно запрограммированными.
Глубокое обучение – область машинного обучения, как правило связанная с обучением многослойных нейронных сетей.
Почему JavaScript?
Machine learning
JavaScript
Почему JavaScript?
Скорость
Приватность
Эффективность
Знакомьтесь – нейрон


Ядро
Дендрит
Аксон
Модель нейрона
Задача классификации
Больше классификации
Еще больше классификации
Проблема XOR
А как происходит обучение?

Предсказание
Истина – Предсказание
Степени обученности



Недообученная
сеть
Обученная
сеть
Переобученная
сеть
Распознавание изображений

Инструменты?




Инструменты?





TensorFlow.js



Core API
Layers API
Browser
WebGL
Node.JS
GPU
CPU
TPU
Модель в TensorFlow.js
const model = tf.sequential();
model.add(tf.layers.dense({units: 20, inputShape: [25]}));
model.add(tf.layers.dense({units: 3}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const xs = tf.tensor(xsData, [30000, 25]);
const ys = tf.tensor(ysData, [30000, 3]);
model.fit(xs, ys)
.then((res) => {
model.predict(tf.tensor2d(test, [1, 25])).print();
});
Определение
структуры
модели
Обучение
модели
Предсказание
Пример распознавания
Кто умеет лучше?


Сверточные сети



Ядра свертки
Не вносит изменений
Добавляет
размытие
Повышает четкость изображения
Повышение четкости изображения
Сверточные сети
model.add(tf.layers.conv2d({
inputShape: [28, 28, 1],
kernelSize: 5,
activation: 'relu',
kernelInitializer: 'VarianceScaling'
}));
model.add(tf.layers.maxPooling2d({
poolSize: [2, 2],
strides: [2, 2]
}));
model.add(tf.layers.flatten());
model.add(tf.layers.dense({
units: 10,
kernelInitializer: 'VarianceScaling',
activation: 'softmax'
}));




Распознавание на основе CNN
Декодирование изображений


Декодирование изображений
posenet.load().then(function(net){
return net.estimateSinglePose(image);
}).then(function(pose){
// Process pose
});
Найди снайпера
А поговорить?

Боты

Bob: i can i i everything else . . . . . . . . . . . . . .
Alice: balls have zero to me to me to me to me to me to me to me to me to
Bob: you i everything else . . . . . . . . . . . . . .
Alice: balls have a ball to me to me to me to me to me to me to me
Bob: i i can i i i everything else . . . . . . . . . . . . . .
Alice: balls have a ball to me to me to me to me to me to me to me
Bob: i . . . . . . . . . . . . . . . . . . .
Последовательности
Пользователь: Забронируй билеты на самолет до Лондона
Бот: Сделано. Информация о билетах: ...
Пользователь: Отлично. Какая погода там будет?
Бот: Где?..

Рекуррентные нейронные сети
Временные последовательности

Стратегии чатботов
Intent-Based – стратегия, основывается на определении сущностей и намерений из сообщений пользователя и выполнении связанных с ними действий
Flow-Based – стратегия, основывается на непрерывном анализе и поддержке диалога с пользователем
Intent-Based стратегия
Пожалуйста, опубликуй три последних моих фотографии на странице в Facebook
опубликуй
фотография
три
последних
intent
media
limit
order
social
photos = Photo
.order('created_at DESC')
.limit(3)
fb.share(photos)
Пожалуйста, опубликуй три последних моих фотографии на странице в Facebook
Dialog Flow


Пример Dialog Flow бота
Перспективы?


Построение разметки



Data-Driven Bundle


new GuessPlugin({
GA: 'XXXXXXXXX',
period: {
startDate: new Date('2018-05-01'),
endDate: new Date('2018-06-05')
}
})
Благодарю за внимание
Надеюсь, я не приблизил появление SkyNET
SergeyMell
Seroga.Mell
Sergey Melashych
sergey.mell@agilie.com
AI JavaScript 2018
By Sergey Mell
AI JavaScript 2018
- 512