40
Deep Learning и нейронные сети на JS Часть 1 ITSubbotnik SPb Fall 2016

#ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

Embed Size (px)

Citation preview

Page 1: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

Deep Learning и нейронные сети на JSЧасть 1

ITSubbotnik SPb Fall 2016

Page 2: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

2

"JavaScript is the world's most misunderstood programming language".

Дуглас Крокфорд

Page 3: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

3

Page 4: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

4

И 80%* из этого…

*все совпадения случайны

Microsoft Office User
Page 5: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

5

Что-то новое для JS: Machine learning

Page 6: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

6

Кто я

https://github.com/Jabherhttps://vk.com/vsevolod.rodionov

Сева Родионов

Page 7: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

7

Кто я

Lead Software Engineer

Page 8: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

8

Кто я и почему я

Организаторhttps://vk.com/spb_frontend

Кто я

http://slack.spb-frontend.ru

Page 9: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

9

Кто я

http://holyjs.ru/

11 Декабря, Москва

Page 10: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

10

Почему я

Page 11: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

11

Моделировать дешевле, чем ставить эксперимент

data => information => knowledge => solution

Что такое машинное обучение (и статистика)

Page 12: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

12

Мы обобщаем частные наблюдения в закономерности

Пример: линейная регрессия

Модели нужны, чтобы что-то понять

Page 13: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

13

Линейная регрессия

Page 14: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

14

Линейная регрессия

Page 15: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

15

Линейная регрессия + обработка =

линейный перцептрон

Page 16: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

16

Перцептрон - классификатор

Page 18: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

18

Как нейронные сети учатся?

Page 19: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

19

А можно эффективнее?

Page 20: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

20

А можно эффективнее?

Page 21: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

21

Зачем нужны нейронные сети?

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

Page 22: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

22

Зачем нужны нейронные сети?Машинное зрение

Page 23: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

23

Зачем нужны нейронные сети?Машинное зрение

Page 24: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

24

Зачем нужны нейронные сети?

Page 25: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

25

Зачем нужны нейронные сети?

А иногда и хуже

Page 26: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

26

Зачем нужны нейронные сети?

Deep2ch

Page 27: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

27

А зачем нам нейронные сети в браузере?

60 секунд на устройстве пользователя

vs

10 секунд на сервере * 10 000 загрузок в час

= 30 машино-часов в час*аренда Amazon GPU инстанса( $440 в месяц)

~ 14 000 долларов в месяц

Page 28: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

28

А зачем нам нейронные сети в браузере?

- Люди не хотят отправлять свои данные на сервер- Офлайн-обработка- И давайте не будем забывать про

React Native и аналоги- И тем более про NodeJS

- А еще можно сделать плагин для PostCSS

Page 29: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

29

А что дальше?

Page 30: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

30

Другие архитектуры? Сверточная сеть

Page 31: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

31

Другие архитектуры? Сверточная сеть

Page 32: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

32

Другие архитектуры? Рекуррентная сеть

Page 33: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

33

Другие архитектуры? GAN

Page 34: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

34

А что дальше?

Page 35: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

35

Поиграться с готовым

Synaptic http://caza.la/synaptic

Page 36: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

36

Поиграться с готовым

Synaptic http://caza.la/synaptic

Page 37: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

37

Поиграться с готовым

Page 38: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

38

Изучить самому

coursera.org/learn/machine-learning

Page 39: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

39

Изучить самому

Elements of Statistical Learning

Page 40: #ITSubbotnik Rodionov talk - "Neural networks in JS" (Нейронные сети на JS, Сева Родионов, ITSubbotnik СПб - осень 2016)

40

Спасибо. Надеюсь, вам понравилось

https://github.com/Jabherhttps://vk.com/vsevolod.rodionov

Сева Родионов

Через 10 минут начнется вторая часть.Она будет посвящена практической реализации обучаемой сети,

умеющей распознавать, например, такие цифры - с объяснением

происходящего