Интеллектуальные системы на 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?

Скорость

Приватность

Эффективность

Знакомьтесь – нейрон

Ядро  

  Дендрит

  Аксон

Модель нейрона

x_1
x_2
w_1
w_2
\Sigma = x_1\times w_1 + x_2\times w_2
\Sigma
\phi(\Sigma)
\begin{bmatrix} 0\\1 \end{bmatrix}

Задача классификации

x_1
x_2
x_1
x_2
\phi(\Sigma) = 1
\phi(\Sigma) = 0

Больше классификации

x_1
x_2
x_1
x_2

Еще больше классификации

x_1
x_2

Проблема XOR

x_1
x_2
x_1
x_2
\phi(\Sigma) = 0
\phi(\Sigma) = 0
\phi(\Sigma) = 1

А как происходит обучение?

x_1
x_2

Предсказание

Истина – Предсказание

Степени обученности

Недообученная
сеть

Обученная
сеть

Переобученная
сеть

Распознавание изображений

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

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

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();
      });

Определение

структуры

модели

Обучение

модели

Предсказание

Пример распознавания

Кто умеет лучше?

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

Ядра свертки

\begin{bmatrix} 0&0&0\\ 0&1&0\\ 0&0&0 \end{bmatrix}
\begin{bmatrix} 1/9&1/9&1/9\\ 1/9&1/9&1/9\\ 1/9&1/9&1/9 \end{bmatrix}
\begin{bmatrix} -1&-1&-1\\ -1&9&-1\\ -1&-1&-1 \end{bmatrix}

Не вносит изменений

Добавляет

размытие

Повышает четкость изображения

Повышение четкости изображения

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

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 . . . . . . . . . . . . . . . . . . .

Последовательности

Пользователь: Забронируй билеты на самолет до Лондона

 

Бот: Сделано. Информация о билетах: ...

 

Пользователь: Отлично. Какая погода там будет?

 

Бот: Где?..

Рекуррентные нейронные сети

x_1
x_2
x_3

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

Стратегии чатботов

Intent-Based – стратегия, основывается на определении сущностей и намерений из сообщений пользователя и выполнении связанных с ними действий

Flow-Based – стратегия, основывается на непрерывном анализе и поддержке диалога с пользователем

Intent-Based стратегия

Пожалуйста, опубликуй три последних моих фотографии на странице в Facebook

опубликуй

фотография

три

последних

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

Made with Slides.com