tshiorny_eugene

4 сентября 2017, Dallas, TX

# Понедельник 29 твитов

Всем доброго времени суток! Первую неделю нового сезона с вами Женя Чёрный, мультстек архитектор и в свободное время энтрепренер.

0:05

Под мультистэк я подразумеваю работу с open-source стэком (в основном Java) и Microsoft-based.

0:10

Применение AI, в частности ML, а ещё конкретнее DNN в различных отраслях и продуктов это один из моих самых горячих интересов

0:14

Для затравочки опросик.
"В своей работе я использую.."

0:21

Пока получается достаточное предсказуемое распределение ответов. Почему Microsoft в аутсайдерах по вашему мнению?

0:44

Сразу оговорюсь: аудиенция Backendsecret не репрезентативная, основная масса респондентов уровень "продвинутые+"

0:47

И используют продвинутые технологии и стэки

0:48

Но Microsoft гораздо лучше адаптирован к разработчику среднего уровня

0:49

Таких разработчиков большинство, и это факт с который надо принимать как данность

0:50

Предвзятость к Microsoft не лучший советчик в выборе и построении адекватного техрешения ;)

1:04
@backendsecret И сразу вопрос из зала. Вот для MS мы знаем дефолтный стек: EF+MVC+IoC (на выбор)+Automapper + мелоч… twitter.com/i/web/status/9…
1:06

Хотелось бы подвести итог под дискуссией о Microsoft стеке: в отшлифованных стандартных техрешениях MS-стек это совершенно валидный выбор

1:32

Есть выбранные стандартные решения для всех необходимых фишек, IDE поддержка для всех этих фишек и широкий выбор разработчиков

1:34

Для менее стандартных решений и новых технологий Java более очевидный выбор.

1:36

Ещё более инновационные решения могут лучше решаться с помощью non-mainstream стеков (Python, Go, Rust, R, Erlang, Scala и т.д.)

1:39

Всегда была интересна география фоловеров @backendsecret. Отмечаемся:
"Я живу и работаю в..."

2:47

Если кто не видел эпического выступления Гарри "Watman" Бернхардта на CodeMash 2012: destroyallsoftware.com/talks/wat

3:10

Хотелось бы дать перспективу, в которой я рассматриваю MS-стек в моей текущей позиции

5:58

Компания поддерживает on-going development 80-ти продуктов в одной экосистеме. Тех стек: Java, .NET, .NET Core, PHP..

6:01

MySQL, SQL Server, Postgres, Mongo

6:01

И это только по верхам. Требуется построить микросервисную экосистему в мульти-стек окружениии. Нужны критерии для решений, на чем писать

6:03

.. какой микросервис, для каких задач эффективнее тот или иной стек, также беря в расчёт доступность и расценки разных ресурсов.

6:04

Для разработки .NET микросервисов в гибридном окружение рекомендую Steeltoe.io от Pivatal

10:14

Steeltoe предлагает коннекторы к Eureka, Zulu, Config Server и Hystrix из нетфликсовского Java стека

10:16

Так что можно можно оркестрировать ВСЕ микросервисы одним Java-based тулсетом.

10:18

Нетфликсовская админка тоже прекрасно работает в таком окружении

10:19

Есть ли у кого негативный опыт по использованию CentOS 7 в production? Поделитесь "подводными камнями"

20:53

Одно из важных преимуществ микросервисной архитектуры это возможность использования многоязыковой экосистемы.

20:57

Кто чем пользуется для оркестрации в таком гибридном ландшафте?

20:58

# Вторник 25 твитов

Микросервисы для меня:

3:06

Я так понимаю респонденты с зашкаленым бульшетометром спят )

3:25

Те, кто попробовал и разачаровался: хотелось бы начать с вас. В чем объективная проблема с микросервисами по вашему мнению?

3:47
Те, кто попробовал и разачаровался: хотелось бы начать с вас. В чем объективная проблема с микросервисами по вашему мнению?
3:55

Когда стек фрагментирован, у тебя по сути даже нет выбора, подумай об этом

5:57

А теперь неожиданный наброс: я считаю, что фрагментрованый стек это хорошо.

5:59

Подведу некую черту: у любого прогресса есть обратная сторона. Есть выбор: бороться с трудностями или не делать прогресса

6:02

Я выбираю трудности и прогресс, поскольку старыми архитектурами решается все меньше и меньше современных задач.

6:04

Ок, следующая тема: SQL или NoSQL?

20:01

Если выбран ответ "Другое мнение, плз озвучьте его"

20:04

Я рад, что большинство ответов пока на 3-й опции

20:07

Несмотря на то, что я большой пропонент NoSQL, хотелось бы спросить ответивших #2: вы реально считаете, что ВСЕ задачи лучше решаются NoSQL?

20:10

Отлично, подводим итоги!
Большинство респондентов придерживаются верной стратегии: каждой задаче свой QL (ДБ, persistence layer)

21:39

NoSQL выплыл не как полная замена SQL, а как инструмент для решения задач плохо решаемых (или не решаемых) с SQL

21:41

SQL - самый информационно емкий из существующих ЯП. SQL рулил и будет пока рулить в большинстве задач.

21:43

NoSQL нужен для решения определенных типов задач.
Вот где он хорош:

21:44

1. Big Data.. но реально Big Data. Базы даже в 10-ки TB могут прекрасно держаться на SQL

21:45

2. Задачи с неструктурированной или полуструктурированный датой (например JSON). Хотя PgSQL прекрасно справляется с этой задачей сегодня

21:47

3. Full Text Search индексы

21:48

Это топ-3, но список не полон.
С каждым днём список проблем требующих NoSQL растет, но остальные задачи до сих пор рулят с SQL

21:51

Любую задачу можно решить чистым SQL или чистым NoSQL (примеров достаточно), но неправильно выбраная ДБ на порядок увеличивает разработку

21:55

Важный момент: NoSQL насчитывает десятки разных архитектур, каждая как правило решает узкую задачу. Неверно выбранная NoSQL ничего не даст.

21:59

Ок, смежная тема: есть такие, кто уже поигрался руками с Cloud Spanner?

22:03

Для тех кто не знаком: это недавно релизнутая гугловая BigData DB с полной поддержкой SQL

22:05
Ок, смежная тема: есть такие, кто уже поигрался руками с Cloud Spanner?
22:13

# Среда 14 твитов

Хотелось бы потрогать тему Big Data:

20:20

Конечная цель биг даты всегда была машинным обучением

22:42

Время итогов: в большинстве задач Big Data не нужна и не надо Ее насильно засовывать

23:36

Big Data нужна, когда есть МНОГО данных. Правило левой руки: 0.5 петабайта.

23:38

Случаи когда размеры данных растут в арифметической и тем более геометрической прогрессии (и точно передут 0.5PB) - претенденты на биг дату.

23:41

Важно отметить, что кол-во задач где бигдата нужна очень небольшое. Но оно растёт.

23:43

Классические случаи для бигдаты: сбор телеметрии с IoT, CCTV видеофутадж, сбор всех инфраструктурных логов, сбор click data в вебе..

23:46

Один из ярких и красивых примеров: военный самолёт за час полёта собирает 5ТВ данных. Во флите несколько сотен самолётов

23:49

Петабайт данных накидывается меньше чем за час. Со всей моей любовью к Postgres - он не тянет :-$

23:50

Зачем же все эти данные нужны? Практически без исключения - для аналитики и машинного обучения.

23:51

Одно из свойств машинного обучения, это то что больше данных - это лучший результат

23:52

Правда увеличение объема данных в 2 раза даёт улучшение на маленькие проценты, но часто оно того стоит

23:53

Очень часто данные собираются без того, что есть их прямое использование: процесс сбора долгий, поэтому предпочтение собрать заранее..

23:55

А потом дать возможность ML инженерам играться с данными и строить модели пост-фактум. Чаще оказывается, что нужные данные не собрали :-)

23:57

# Четверг 57 твитов

Согласен, click data не верный термин. Click view data - термин более широкий и охватывающий эту категорию

0:02

Пару заключений по поллу о бигдате: противники бигдаты скорее всего почувствовали на себе бигдатлвый хайп, когда ВЕЗДЕ хотели её втащить

0:41

Но это не значит, что бигдата плоха или не нужна. Это важных инструмент для важных задач, которых значительно меньше, чем обычных

0:43

Для тех кто "хочет, но не дают": играйтесь сами, чтобы освоить и быть готовыми! Но не тащите её туда, где она не нужна!

0:47

Если у кого были сомнения, что закон Мура все ещё работает: goo.gl/eVgU4s.
TL;DR - скоро засунут мощный сервер в размер телефона

8:44

Эти углеродные нанотрубы известны достаточно давно, но были шоустоперы с массовым производством

8:46

Опустимся с высоких материй в повседневные реалии: как писать хороший код? Что такое хороший и "чистый код"?

8:52
@backendsecret хорош и чист только тот код, который не стали писать :)

Не поспоришь :-)
Но есть такой принцип "Идеального Конечного Результата" - это когда системы нет, но её функция вып… twitter.com/i/web/status/9…

9:02

К сожалению, когда нет кода, нет системы, но её функция НЕ выполняется

9:03
@backendsecret Можно было вариант "Код без багов" (жаль что > 4 нельзя) заменить на: "Гибкий расширяемый код" за ис… twitter.com/i/web/status/9…

А как знать заранее, что код должен быть гибким и расширяемым? twitter.com/gorancheg/stat…

9:05
@backendsecret не хватает варианта легко поддерживаемый и тестируемый

Легко читаемый в большинстве случаев = легко поддерживаемый.
Тестируемый - это тема для отдельной дискуссии:-) twitter.com/donnainsolita/…

9:08

Пока мне очень нравится тенденция ответов. Из этого можно сделать вывод, что с практикой "Clean Code" бол-во знакомо.

9:11

Накинем слегка в сторону холивора? Для меня TDD:

9:17
@gorancheg @backendsecret Постулат "Software has bugs" ("ПО содержит баги") — это не
выдумка лицемеров и лжесвидете… twitter.com/i/web/status/9…

С постулатом полностью согласен. Однако чем он нам помогает в контексте "чистого кода"? twitter.com/gukobrist/stat…

9:20

Пока сражён наповал.. Реальный TDD не практикует НИКТО?

9:24
@backendsecret Без TDD нельзя сделать нормальную командную работу с agile и CI/CD. До этого нужно дорасти.

Ура! Первый единомышленник! twitter.com/russianlagman/…

9:28
@russianlagman @backendsecret Прототип/проектирование -> Тест -> Код

Мне как-то так комфортнее работать, ибо в нач… twitter.com/i/web/status/9…

Это имеет смысл, хотя со временем появляется интуиция, что тестировать даже бес прототипа. Хотя время от времени пр… twitter.com/i/web/status/9…

9:35
@backendsecret @russianlagman если нужно баг исправить, то сперва тесты. А если начал с прототипа UI и архитектуры — тесты уже после кода

Да, прототипирование это норм практика. Но важно понимать, где кончается прототип, а где начинается продакшн код. twitter.com/soulmusic/stat…

9:47
@backendsecret Нет варианта "хотелось бы, да никак не заставим себя"

На самом деле отличный ответ. TDD это самодисциплина, и это дико тяжело даётся. Путь от "код-тест" к "тест-код" взя… twitter.com/i/web/status/9…

9:50
@soulmusic @backendsecret Как бы архитектура изначально должна строиться из абстракций вида интерфейса или сваггер… twitter.com/i/web/status/9…

Архитектура не первична. Бизнес требование первично - его нужно тестировать. Архитектура должна быть "emerging" из… twitter.com/i/web/status/9…

9:57
@backendsecret Очень сложно TDD когда ты не знаешь чего хочешь, или спецификация очень расплывчатая, а делать надо.

Надо копать требование, пока не поймёшь как его проверять. Пока не поймёшь - не бери в спринт. Если возьмёшь- получ… twitter.com/i/web/status/9…

10:00
@russianlagman @soulmusic @backendsecret Он про BDD - это утопия, где на момент написания спека, аналитик еще и тесты пишет)))

Если бизнес требование не тестируемо (и аналитик не может описать теста) - то это не бизнес требование. twitter.com/gukobrist/stat…

10:04
@backendsecret Предпочитаю типы тестам.

Тип определяет структуру (что отлично), но к сожалению не определяет поведение. twitter.com/yelbota/status…

10:06

Люблю BDD, хотя конечно тесты написаные анналистом это утопия. Но я ожидаю от него вменяемое DoD - тесты сам напишу :-)

10:09

The later you test, the more it costs to write tests.

10:12

The longer a bug lives, the more expensive it is to fix.

10:13

Every line of code without tests will be significantly more difficult to debug or rewrite.

10:14

TDD done half way, half hearted, and half assed is a big reason some don't respect it.

10:21
@backendsecret Если программисты отказываются писать юниттесты, оправдывая это тем, что за тестирование платят тестировщикам, то еще дороже.

Программистов нельзя заставить писать юнитесты (если заставишь - получишь "код-тест", а не TDD). Их нужно вдохновля… twitter.com/i/web/status/9…

10:25

Одна из самых больших ошибок в TDD - это забивание на шаг #3: прошёл тест - РЕФАКТОРЬ, пока код не станет понятен первокласснику и аналитику

10:33
@backendsecret Новые сервисы в проекте покрыты тестами, основная кодовая база захламлена.

Вот это одна из основных проблем TDD: как покрыть тестами легаси код? twitter.com/00babe9/status…

10:35

Итоги полла о TDD. Юнитесты практикует большинство, но только 1/8 из них делает test-first.

20:30

Присутствие юнитестов в бол-ве проектов вдохновляет, однако сообщество очень далеко от адаптации TDD.. очень

20:32

Поэтому обращусь к аудитории, практикующей код-тест без TDD (читайте в реплаях)

20:34

1. Писать тест после кода на 50%-200% более трудоемко

20:35

2. Код написанный после теста имеет сильную тенденцию быть короче

20:36

3. Тесты написанные после кода имеют значительную тенденцию к низкому покрытию

20:37

4. Код написанные после теста имеет тенденцию к меньшему кол-ву дефектов

20:38

5. Отладка кода через запуск юнитеста (вместо поднятия всей системы для каждой итерации) занимает на порядок меньше времени

20:40

6. Перейти на TDD психологически трудно (и это основной фактор нашей плохой статистики). Пробуйте, не сдавайтесь, плз!

20:43

7. Перейдя на TDD вы почувствуете уверенность в своём коде, более высокую производительность, меньше дефектов и чувство профессионализма.

20:45
вот у вас нету 11 дней спринта, а есть только 6 часов на то что бы написать несколько процессов для бизнеса. что де… twitter.com/i/web/status/9…

Человек со сломанной ногой приходит к врачу, но очень торопится и просит просто залепить перелом пластырем. twitter.com/aharonsh/statu…

21:14

Что ты скажешь о враче, который на такое согласится? Ага, безответственная скотина.

21:15

Инженер тот же врач: он должен гарантировать качественные результаты, а не показывать, что он быстро наклеил пластырь

21:17

Потом больной умирает от гангрены, но зато мы быстро наклеили пластырь.

21:18

Короче, я бы сказал, что у меня возьмёт 11 дней "вылечить" бизнес требование. Пластырь клеить не согласен.

21:21

Инженер не должен быть yes-меном на побегушках у sales. Инженер принимает ответственные решения. Неправильные решения могут стоить миллионов

21:22
@igor_maslik Нет, тесты это не панацея. Это прививка от оспы, ветрянки и менингита. От рака и даже перелома конечно не спасёт
21:26
@backendsecret Тесты еще учат по другому писать код. Более модульно и изолировано, чтобы было легче потом писать тесты на него.

+1 twitter.com/timrael/status…

22:04
@backendsecret TDD это убийство времени и нонсенс в 99% случаев
Придумано аджайл коучами которым нужна работа и программистами бездельниками

TDD придуман Кент Беком (разработчиком с огромным опытом) при работе над крупными проектами в General Electric. Коу… twitter.com/i/web/status/9…

23:18
@ruxeg @backendsecret А как назвать разработку с тестами?

Прижившийся термин - TLD (Test Last Development) vs TDD (Test Driven Development) twitter.com/visualwatermar…

23:27

Нашёл интересный paper, показывающий незначительную разницу между TDD или TLD: goo.gl/gKg2RB

23:46

А вот блог cleancoder-а, где Боб Мартин, разбирает как был построен эксперемент: goo.gl/CXheL7.
Весело, мне понравилось! :-)

23:50

# Пятница 41 твит

Вопрос: когда пишется маленький чанк кода, потом пишется тест на него и потом рефакторинг, это ближе к TDD или TLD?

2:14

Посколько TLD практика выглядит для меня так: написали всю СТОРЮ, закинули на тест энв.. А завтра или в следующем спринте пишем тесты.

2:19

И то если не лень и начальство наезжает, что тестов нет.

2:20
@backendsecret Если не пишешь тест первым это точно не tdd, акстись!

Ну это и не Test Last! twitter.com/ruxeg/status/9…

2:22

Если все те, кто не TDD-ит пишут тесты подобным образом - я воспряну духом :-)

2:28

Попробую пересмотреть все эффекты TDD и понять если Short Iteration TLD (термин сам придумал) достигает того же результата...

2:33
@ruxeg @visualwatermark @backendsecret Лучше быть из церкви тдд, чем из церкви типов с их "компилится значит работает"

Я вообще против института церкви :-). Я за то что работает и делает нашу работу более эффективной. twitter.com/mr_apt/status/…

19:27

Наметился TDD/TLD консенсус.
Короткие итерации "тест-код-тест" дают больше эффекта, любая выбранная техника с длинными итерациями.

19:32

По сути в контексте TDD длинные итерации это нонсенс и противоречит методологии. Что только подтверждает закономерность.

19:34

Разработчик, практикующий TLD с короткими код-тест циклами может достичь эффекта близкого к TDD.

19:36

TDD по определению навязывает короткие код-тест циклы.

19:37

При придерживании практики коротких код-тест циклов, выбор между TDD/TLD становится больше делом вкуса, чем холивором.

19:39

Дискуссия затянулось дольше чем хотелось бы. Будем менять тему. Есть заинтересованные в или практикующие ML (Machine learning)?

19:47

Artificial Intelligence и Machine Learning

19:52

Вопрос для практикующих ML. Пользую:

19:56

Да, не врут, когда говорят, что TF самый популярный FW для ML. А кто нибудь игрался с чем-нибудь кроме TF?

20:04

Интересно, выбравшие #4: троллят или взаправду так считают? Можете прокомментировать?

20:21

Одно из косвенных преимуществ TF - возможность запускать трейнинги в Google Gloud ML, который бежит на гугловых TPU.

21:04

На TPU-ном кластере по словам Гугла можно получить 300 teraflops

21:05

Для сравнения NVIDIA Titan XP (который стоит в районе 1.5К) выдаёт 12 терафлопс

21:08

Единственная неприятность: Cloud ML требует Python 2.7. Приходится прикручивать six и тому подобные шняги

21:11

Кто на чем гоняет трейнинги:

21:15

Для простых неглубоких сеток норм.

21:29

Но конволюшка с 5-ю слоями - уже час-два на трейнинг

21:30

Серьёзная конволюшка с десятками слоёв по несколько дней трейнится на Титане, а на i7 это недели или месяцы.

21:32

Кстати, утверждают, что на AMD трейнинг быстрее чем на Intel - если уж GPU нет

21:34

А, полезный совет: Google ML даёт сейчас $300 кредита на трейнинги. Один ML unit стоит $0.40 в час, чтобы получить GPU надо 2 ML юнита

21:36
А, полезный совет: Google ML даёт сейчас $300 кредита на трейнинги. Один ML unit стоит $0.40 в час, чтобы получить GPU надо 2 ML юнита

Получается за бакс в час можно получить Tesla K80. На $300 можно много чего погонять. twitter.com/backendsecret/…

21:38

О, появился кто-то Теслой К80! Завидую белой завистью! В личном пользовании или корпоративная?

21:42

Или Гугловская?

21:42

Чем занимаюсь в ML..

21:45
@backendsecret Как личная немного дорого)

Для широкой аудитории: NVIDIA Tesla K80 самая мощная видео карта доступная сегодня в продаже.
Цена в районе $8,000… twitter.com/i/web/status/9…

22:02
@backendsecret вообще, живых людей, использующих CNTK, я не видел, в отличие даже от Theano, MXNet и прочих не самых популярных фреймворков

Сказывается предвзятость к Microsoft видимо. Хотя по ревью он совсем не плох twitter.com/arseny_info/st…

22:35
@backendsecret непонятна его сильная сторона. mxnet быстрый и хорошо параллелится, tf документирован и годится в пр… twitter.com/i/web/status/9…

Я бы не рассматривал Keras vs computational graphs. Keras можно ко всем прикрутить, включая CNTK twitter.com/arseny_info/st…

22:46

Ок, в слушателях есть пару человек, которые наверняка могут многому меня поучить в ML. Но рискну завести более глубокую дискуссию

23:51

Если гоню - вы меня одергивайте :-)

23:52

Вкину сразу для интересующихся: самый популярный источник знаний по ML это курсеровский курс Andrew Ng от Stanford

23:53

Coursera.org, ищите Stanford Machine Learning

23:54

Курс отличный, Эндрю бесподобен. Очень рекомендую.

23:54

Следующий шаг - новая пачка из 5-ти курсов от Эндрю. Идите на deeplearning.ai - оттуда ссылки на конкретные курсы.

23:56

Или просто ищите Deep Learning в Coursera

23:56

# Суббота 140 твитов

Refactoring is an exercise in kindness, testing an exercise in honesty #AgileAfrica
0:05

Едем дальше: DNN - или Deep Neural Network. Network - потому что это по сути граф вычислительных нодов.

0:09

Neural - потому что концепт вдохновлён работой нейронов человеческого мозга (хотя аналогия достаточно отдалённая, нейрон сложнее)

0:11

Deep - потому что строится много лейеров один над другим. Математически - функция от функции от функции... и т.д.

0:12

Важно отметить: DNN это область supervised learning, то есть те задачи, когда при тренировке мы говорим алгоритму какие ответы правильные.

0:14

DNN долго и нудно обучается, но потом делает предсказания сама только на основе входных данных без нашего участия

0:15

Что интересно, концепт DNN придуман ещё в прошлом веке, но тогда это было непрактично поскольку вычислительно сверх тяжело

0:17

Но закон Мура работает, и в 2000-х исследователи получили возможность проверить, что эти штуки умеют.

0:18

Оказалось, что умеют многое. Практически все известные на тот момент AI задачи решались лучше с DNN, хотя медленнее

0:19

Вышло несколько исследований, теоретически доказывающих, что чем глубже DNN, тем больше его возможности

0:21

Стали строить более глубокие и широкие сетки, но возникло несколько проблем: они хреново работают с двух-трех-мерными данными и..

0:23

После добавления большего код-ва уровней DNN перестаёт работать: предсказания или всегда "да" или всегда "нет", короче никуда не годится

0:25

Первую проблему решил Андрей Карпатый (профессор Стенфорда, ныне Tesla AI). В 2012 году он предложил Convolutional Networks

0:27

Convolutional Networks побили всех и вся в image recognition задачах.

0:29

В 2015 году Сергей Иоффе и компания решили вторую проблему: они предложили способ нормализации данных между уровнями - Batch Norm

0:30

В том же году группа исследователей с труднопроизносимыми азиатскими именами предложили концепт Residual Network

0:33

Residual Network помогает предотвращать явление затухания сигнала путём перекидывания остаточного сигнала с предыдущих уровней наверх

0:35

Также в период 2007-2015 появилось много разработок Recurrent Neural Networks, которые хороши для данных изменяющихся во времени

0:37

RNN-в по сути ввели свойства памяти в нейронные сети. Более отточенный концепт это LTSM (long-short-term-memory neurons)

0:38

RNN бесподобно работают в Natural Language Recognition.
Очень прикольный пост о RNN от Карпатого - karpathy.github.io/2015/05/21/rnn…

0:41
Первую проблему решил Андрей Карпатый (профессор Стенфорда, ныне Tesla AI). В 2012 году он предложил Convolutional Networks

Поправка, не Карпатый, а Алекс Крыжевский twitter.com/backendsecret/…

0:44

Короче, благодаря прорывам последних 5-лет исследователей понесло, стали экспериментировать со сложными очень глубокими архитектурами DNN

0:46

Цифр точных не дам, но за последние 2 года (2016-2017) кол-во исследований (и многих из ни успешных) умножилось.

0:48

Стали акцентироваться больше на специфических задачах и выявлять более не менее стандартные архитектуры.

0:51

Например: Stacked Hourglass Architecture (arxiv.org/abs/1603.06937) последовательность сегментов конв-уровней в форме песочных часов

0:53

А потом берётся несколько таких песочных часов и ставятся друг за другом. Как результат- очередные рекорды в бенчмарках

0:54

Это было давно... в 2016. В 2017 выходит уже с десяток исследований, которые развивают, улучшают и оптимизируются эту архитектуру.

0:55

Если кто-то серьезно хочет следить за новостями в этом мире: arxiv.org. Сюда публикуются все последние академические работы

0:57

И это лучший источник свежей информации, для тех кто прошёл все курсы Coursera и ищет куда идти дальше

0:58

Блиц опрос:

1:00

Также рекомендую YouTube channel Stanford School of Engineering.

1:02

Личный патент, как знать, что ты придумал что-то прорывное в AI: если после генерирования идеи появилась Сарра Конер - ты на верном пути :-)

1:10

Ещё по учебно-вспомогательному материалу:
Подкаст Machine Learning Guide:
overcast.fm/+JTij3pXTo Очень хорошо пойдёт параллельно Курсере

1:18

Подкаст Twiml&AI - отличные еженедельные интервью по разным суботраслям AI:
overcast.fm/+Gooh7TQ5Y

1:20

Неплохой ютуб канал от Siraj Ravel - youtu.be/JuLCL3wCEAk хороший практический опыт на Python с TensorFlow.

1:23

Хотя иногда его темп выносит мне мозг

1:23

Хорошо, теперь можно в глубину. Если есть вопросы, мысли вслух, затруднения - пишите, попытаюсь адресовать

1:25

А пока ещё пару забросов насчёт последних событий в исследованиях

1:27

В 2017 году вышло очень много работ по Reinforcement Learning.
Проблема: для того чтобы обучить систему, надо много данных. Очень много

1:29

Если данных мало, система будет "предвзята". Но собрать больше данных это долго и соответственно финансово тяжело

1:30

Reinforcement Learning это все ещё supervised learning, но вместо ответа на каждый пример мы только говорим какая конечная цель

1:31

Промежуточные действия система пытается найти сама.
Deep Mind купленный Гуглом пару лет назад преуспел в этом подходе

1:32

Для информации: Deep Mind даёт DNNу учится играть в игры Атари, имея только изображение с консоли и доступ к клавиатуре.

1:33

Deep Mind обыграл чемпиона мира в китайские шашки Go. Это игра, у которой после каждого хода открывается бесконечное кол-во новых вариантов

1:35

Её невозможно просчитать как шахматы: нужна человеческая интуиция. Reinforcement Learning справился с этой задачей

1:36

Очень интересный стартап, который придумал новую парадигму языка программирования для AI - bons.ai

1:38

Парадигма названа педагогической. Программист формализирует цепочку концептов для reinforcement learning, чтобы сис-ма училась эффективнее

1:40

Ещё одна свежая тема: GAN - Generative Adversarial Networks.
Или Генерирующие Состязательные Сети

1:43

GAN принцип: давай системе настоящие данные и искусственно сгенерированные. Цель две - научиться различать настоящие данные от фейковых

1:45

Вторая цель - научить генератор вырабатывать искусственные данные, которые неотличимы от настоящих.

1:46

Очень прикольная тема, рай для хакеров и головная боль для специалистов по безопасности

1:47

Что характерно, это лежит в области unsupervised learning- мы не говорим системе где правильный ответ заранее.

1:49

В сочетании с RNN можно генерировать текст, картинки, звук неотличимые от настоящих. Facebook очень сильно на них акцентируется

1:51

Вспомнил ещё один факт по поводу Reinforcement Learning: по моему с прошлого года с помощью RL AI обучается быстрее чем человек

1:56

А тот же Андрей Карпатый показал, что с 2015 года сис-мы распознованием изображения работают лучше, чем человек.

1:57

Он дал своим коллегам задачу - научится распознавать породы собак по картинкам. После 2-х недель люди делали это с 95% эффективности

1:59

А DNN на пару процентов лучше..

1:59

И с тех пор (2 года) показатели улучшились. Не удивлюсь, если к кому то уже пришла Сарра Конер )

2:00

Но начнём с простых и однозначных вещей. Как мы передаём инпут? Для всего, что не имеет пространственной структуры: всегда вектор

19:39

Для картинок - матрица. Хотя с вектором тоже будет работать, но не добьёшься высокой аккуратности предсказаний

19:42

Для NLP (и здесь присутствуют товарищи с опытом NLP, могут поправить) мы используем word embedding

19:44

Word embedding - идея в том, что чем ближе слова расположены в тексте, тем ближе они семантически.

19:45

Каждое слово представлено многомерным вектором, где каждой измерение это какой то семантический концепт.

19:48

Интересно идея использования похожей техники не для NLP, но пока интересных результатов не видел.

19:50

Опять таки, теоретически можно попробовать матричный инпут для дата анализа, но здесь пока тоже нету интересных прорывов

19:53

Едем дальше. Для картинок и сигналов данные неплохо поварьировать. Сдвинули картинку, покрутили, добавили зелени.

19:55

Это процесс так называемой дата аугментации - искусственно разнообразим наш дата сет

19:57

В случае дата анализа данные надо нормализовать - иначе оптимайзер может не работать вообще. Как бы сдвинуть в центр координат

20:01

И сделать так, чтобы разброс по осям был в одной размерности

20:02

Дальше у нас есть куча параметров: начиная с Learning rate и заканчивая padding для конволюх. С эти немного сложнее.

20:03

Как правило learning rate оптимайзера - самая важная штука. Его подбираем очень скрупулёзно.

20:05

Есть лекция в новом курсе Andrew Ng по оптимизации гиперпараметров, а также лекции 6 и 7 в Стенфордском курсе на ютюбе

20:07

Дальше: функция активации. Их много, но считается, что для DNN на все можно забить и оставить так называемый ReLU

20:08

ReLU практически это наполовину линейная функция, посему работает очень быстро. А также нет изчезновения градиентов.

20:10

Но я пока интуитивно вставляю также leaking ReLU: max(0.01x, x), хотя реже.

20:12

Дальше самая интересная и сложная часть, которую и имел ввиду @ruxeg в своём вопросе.

20:14

Какие лейеры, в каком порядке, какой ширины и как глубоко?

20:15

Как я уже говорил, теоретически, чем глубже сетка, тем она умнее (могу поискать ссылку на arxiv с исследованием)

20:17

Но глубокие сетки начинают на практике терять кач-во и жрут не по детски память и машинные такты

20:18

Для того, чтобы сетка не тупила, пользуем batch norm и residual unit.

20:19

Batch norm это сути та же нормализация, но не на входе, а между скрытыми уровнями сетки.

20:20

Residual Unit - это клевая штука. Это когда сигнал понимается наверх через наши лейеры, и параллельно напрямую с нижних лейеров.

20:22

Благодаря этим техникам подняли код-во уровней в нейронках с 20 до 152.

20:23

Здесь подводный камень - если вычисления не влазять в память GPU - п-ц ослику

20:24

Есть обходы, но не совсем тривиальные. Для реферанса смотрите AlexNet - они на соревновании ImageNet разбивали все на 2 GPU

20:26

По поводу размера кернела для конволюх: большие кернелы работают хреново. 3х3 и 5х5 оптимальный выбор

20:28

Несколько конв лейеров один за одним решают ту же пробему, что и большой кернел, но эффективнее.

20:29

Как показывает практика вставлять fully connected лейеры между конволюциями - вообще ничего не даёт. Один fully connected в конце.

20:33

Однако 2-4 коволюции подряд (между maxpool-ми) это интуитивно хорошо, чтобы увеличить "поле восприятия"

20:35

Дальше в лес - толще партизаны и вокруг зона активных исследований последнего года

20:37

Слава б-ну есть 30 тысяч AI исследователей по всему миру и они перебирают много вариантов.

20:39

И начинают находить, какие архитектуры хорошо решают определённые задачи.

20:40

Зачастую находят какую-то модель сегмента нейронки и начинают её стакать вертикально.

20:41

Это тенденция начата ещё года с 2012, но сейчас она чётче выражена. Смотрите VGG, AlexNet, GoogleNet и Stacked Hourglass как примеры подхода

20:43

Хотя я находил совершенно тупо структ-ные модели, которые хорошо работают: например Convolutional Pose Machine - arxiv.org/abs/1602.00134

20:47

Короче, на данном этапе больше похоже на ресерч в физике: делают эксперимент, если хороший рез-тат - пытаются подвести матбазу и интуицию

20:50

Я думаю, что след. Пару лет начнут выделять стандартные сегменты нейронок и объяснять чего и как они достигают

20:54

А мы как инженеры будем их свинчивать одну с другой, для решения наших задач.

20:54

У меня уже пару недель вертится идея ассиметричной сетки, где сигнал делится и проходит через разного вида сегменты, а потом складывается.

20:57

Похоже на residual unit, но второй сигнал поднимается не напрямую с нижнего уровня, а через друго вида лейеры.

20:59

Матбазы не хватает, чтобы подтвердить интуицию - придётся экспериментировать. Надеюсь дойдут руки.

21:00
@backendsecret Особенно для дилетантов

Я пока и сам считаю себя дилетантом. Хотя когда понимаю, что в последнее время читаю только паперы 3-х месячной дав… twitter.com/i/web/status/9…

21:06

Несмотря на то, что мы находимся в периоде активного исследования и ничего не понимаем в Матрице..

21:19

.. существующие инструменты УЖЕ решают огромное кол-во инженерных задач.

21:20

Сейчас период, когда AI становится электричеством 21-го века.

21:21

Самая большая проблема - ничтожно мало инженеров, которые могут оперировать AI, несмотря на огромное кол-во исследователей

21:22

Тот кто сейчас заскакивает на коня - с большой вероятностью обеспечивает себя высоко-оплачиваемой и сверх-интересной работой

21:23

Что характерно, очень многие сдвиги в ML вдохновляются новейшими исследованиями мозга.

21:30

Да и не только новейшими. Например идея конвнетов - это аналогия работы нашего визуал кортекса.

21:32

Почитываю слегка нейронаучные работы (хотя понимаю в них только abstract секцию;-)), чтобы получить интуицию для аналогии в ANN

21:33

Человеческий кортекс состоит из 7 лейеров, которые очень четко разделены.

21:34

У дельфина их 5. У собаки - 4. У земноводных - 3.

21:35

Это наводит на мысль, что больше слоёв кортекса дают возможность оперировать более абстрактными сущностями

21:36

Важно: один слой кортекса это НЕ один уровень нейронной сети. Это вся сеть, которой мы оперируем сегодня

21:38

Обычно даже сложные задачи решаются одной сеткой, когда на выходе есть оптимизатор, который делает "обратное пропагандирование"

21:40

Это "обратное проп-ние" и есть обучение. Но в человеческом кортексе есть много уровней!

21:42

А что, если результаты нескольких сетей передаются в одну верхнюю, без того что есть одна общая функция оптимизации?

21:43

Например: одна конволюционная сеть для визуального инпута, одна для звукового, одна для тактильного.

21:44

И следующая стека получает все три инпута и учится на нем выполнять более абстрактные задачи, имея свой оптимайзер.

21:45

И не исключено, что этих сеток на втором уровне много и каждый решает свою задачу?

21:46

А этих уровней можно сделать много! Упс, извините, мне Сарра Конар звонит ;-)

21:47

Это конечно спекуляция, воображение и во многом безосновательный треп, но захватывает. Не исключено, что лет через 5 так и будет работать

21:48

Страшно пока никому не стало? Если честно, мне порой страшно. Поэтому был создан типа интернациональный комитет по контролю использования AI

21:50

Я читал, что они добиваются запрещения использования AI в любых типах вооружения.

21:52
Я читал, что они добиваются запрещения использования AI в любых типах вооружения.

Вот, нашёл: futureoflife.org/open-letter-au… twitter.com/backendsecret/…

21:53

Блиц опрос: послушал и теперь..

22:01

Мне бы спокойней спалось, если бы все страны подписались на такой конвенции

22:25

Очень рад, что вызвал интерес. Очень нужны ML инженеры!

22:32

Чисто в рамках любопытства и развития вербальной коммуникации хотелось бы понять, почему дискуссия для некоторых звучит бредом?

22:36
@backendsecret Пару примеров приведите, для закрепления образа :)

К счастью примеров десятки, а то и сотни: twitter.com/moroz_v/status…

22:43

Ретейл: предсказание спроса, чтобы оптимизировать инвентори, рекомендация оптимальной цены, рекомендация продуктов, релевантность поиска

22:45

Предсказание трафика для автомаштабирования контейнеров, рекомендация промошенов, оптимизация лайаута сайта по click data

22:47

Обнаружение краж, прогнозирование спроса на новые продукты, обнаружение аномалий продаж, сегментирование клиентской базы

22:50

Финансы: предсказание рисков, автоматическое распознавание чеков, оценка риска ссуд, анализ юридических документов

22:52

Девопс: предсказание сбоев, автомаштобирование (уже упоминал), оптимизация топологии, обнаружение сукюрити атак

22:54

Дай область - подумаю над примерами

22:55
@backendsecret Пару примеров приведите, для закрепления образа :)

Вот совсем тривиальная идея: сортировка длинных выползающих списков в UI по вероятности выбора пользователем twitter.com/moroz_v/status…

22:59
Финансы: предсказание рисков, автоматическое распознавание чеков, оценка риска ссуд, анализ юридических документов

Интересный момент с финансовой сферой: в США законодательство требует объяснять отказ для выдачи ссуды. twitter.com/backendsecret/…

23:16

А решение принятое DNN практически невозможно объяснить человеческим языком!

23:17

Поэтому используют более простые "shallow" модели такие как Hidden Markov и Decision Trees. Ничего общего с DNN, но тоже интересно

23:20

# Воскресенье 23 твита

Похожий подход, только глубже, ассиметричней + резидул юнит в параллель к ним

0:21

Не исключаю, что получится полный бред... я все же не ресерчер

0:21

Результаты GoogleNet и ResNet вдохновляют на положительный результат

0:25

Если есть мысли - пиши в личку

0:26
@backendsecret ну это же все детский сад, сетки далеки от самосознания как червяк от человека, ошибки и сбои - да, но AI тут не при чем

Во первых, когда смотрю на reinforcement learning - уже начинает напоминать сознание. twitter.com/raxpost/status…

0:50

Во-вторых, мы часто плохо представляем, что происходит в DNN, т.е. хуже контролируем, по сравнен с обычным кодом

0:52

Если через 30-лет такая штука (только на порядки быстрее и больше) решает что-то, что нам не нравиться - дай б-г у нас есть доступ к руб-ику

0:55

И третье: смотрел TED с одним из профессоров Стенфорда (тоже участник конвенции, которую я послал)

0:56

По его сказал, сценарий восстания машин не реален раньше чем через 30 лет

0:57

Но предлагает на это не полагаться: в 30-х годах в США авторитетные исследователи писали, что нужно ещё 30 лет чтобы расщепить атом

0:58

А через неделю другой менее авторитетной группе это удалось.

0:59

Вывод: лучше думать об этом раньше и оказаться неправым, чем игнорировать и проморгать всемирный п-ц.

1:02
@backendsecret ну это же все детский сад, сетки далеки от самосознания как червяк от человека, ошибки и сбои - да, но AI тут не при чем

Не так много миллионов лет назад мы были червяками. На фоне истории в 14 биллионов лет это пару часов в масштабах в… twitter.com/i/web/status/9…

1:05
Не так много миллионов лет назад мы были червяками. На фоне истории в 14 биллионов лет это пару часов в масштабах в… twitter.com/i/web/status/9…

И на этом фоне запретить автономное оружие управляемое AI - совсем не утопический запрос. twitter.com/backendsecret/…

1:08

Не говоря о том, что в Израиле есть боевые дроны управляемые AI. А чего стоит дать им самим гашетку нажать? Пока они только летают сами..

1:09

Ладно, никого не пугаю, апокалипсиса не предвидится: просто копание в AI наводит на мысли о таких сценариях.

1:22

Наше дело маленькое - JSON-ны парсить и в БД записывать :)

1:23

Господа, для меня это неделя было очень интересной и увлекательной, надеюсь что вас тоже позабавил!

1:29
Господа, для меня это неделя было очень интересной и увлекательной, надеюсь что вас тоже позабавил!

"Преследуйте" меня на Твитере, пишите в личку, если интересно копать глубже в какие либо поднятые темы. twitter.com/backendsecret/…

1:31

Мы поговорили о реинкарнации Microsoft, микросервисах, контейнерах, биг дате, чистом коде, тестах и искусственном интеллекте

1:33

Область моих интересов этими темами не ограничена, поэтому всегда рад интересным и продуктивным дискуссиям и новым знакомствам.

1:35

Если не трудно, поставьте оценочку, фитбек всегда интересен:

1:38

С Вами был Евгений Чёрный, всем отличных выходных, удачной недели и творческих успехов!

1:39

goo.gl

other