tshiorny_eugene

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

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

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

21:05

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

21:10

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

21:14

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

21:21

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

21:44

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

21:47

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

21:48

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

21:49

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

21:50

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

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

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

22:32

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

22:34

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

22:36

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

22:39

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

23:47

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

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

0:10

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

2:58

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

3:01

MySQL, SQL Server, Postgres, Mongo

3:01

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

3:03

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

3:04

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

7:14

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

7:16

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

7:18

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

7:19

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

17:53

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

17:57

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

17:58

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

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

0:06

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

0:25

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

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

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

2:57

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

2:59

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

3:02

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

3:04

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

17:01

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

17:04

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

17:07

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

17:10

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

18:39

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

18:41

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

18:43

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

18:44

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

18:45

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

18:47

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

18:48

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

18:51

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

18:55

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

18:59

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

19:03

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

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

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

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

17:20

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

19:42

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

20:36

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

20:38

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

20:41

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

20:43

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

20:46

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

20:49

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

20:50

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

20:51

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

20:52

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

20:53

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

20:55

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

20:57

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

21:02

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

21:41

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

21:43

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

21:47

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

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

5:44

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

5:46

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

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

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

6:02

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

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

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

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

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

6:08

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

6:11

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

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

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

6:20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7:06

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

7:09

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

7:12

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

7:13

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

7:14

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

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

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

7:25

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

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

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

7:35

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

17:30

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

17:32

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

17:34

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

17:35

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

17:36

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

17:37

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

17:38

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

17:40

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

17:43

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

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

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

18:14

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

18:15

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

18:17

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

18:18

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

18:21

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

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

+1 twitter.com/timrael/status…

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

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

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

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

20:27

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

20:46

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

20:50

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

23:14

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

23:19

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

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

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

23:22

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

23:28

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

23:33

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

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

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

16:27

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

16:32

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

16:34

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

16:36

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

16:37

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

16:39

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

16:47

Artificial Intelligence и Machine Learning

16:52

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

16:56

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

17:04

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

17:21

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

18:04

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

18:05

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

18:08

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

18:11

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

18:15

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

18:29

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

18:30

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

18:32

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

18:34

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

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

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

18:38

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

18:42

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

18:42

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

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

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

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

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

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

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

19:46

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

20:51

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

20:52

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

20:53

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

20:54

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

20:54

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

20:56

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

20:56
Refactoring is an exercise in kindness, testing an exercise in honesty #AgileAfrica
21:05

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

21:09

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

21:11

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

21:12

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

21:14

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

21:15

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

21:17

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

21:18

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

21:19

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

21:21

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

21:23

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

21:25

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

21:27

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

21:29

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

21:30

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

21:33

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

21:35

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

21:37

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

21:38

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

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

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

21:44

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

21:46

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

21:48

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

21:51

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

21:53

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

21:54

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

21:55

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

21:57

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

21:58

Блиц опрос:

22:00

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

22:02

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

22:10

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

22:18

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

22:20

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

22:23

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

22:23

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

22:25

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

22:27

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

22:29

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

22:30

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

22:31

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

22:32

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

22:33

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

22:35

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

22:36

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

22:38

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

22:40

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

22:43

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

22:45

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

22:46

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

22:47

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

22:49

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

22:51

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

22:56

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

22:57

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

22:59

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

22:59

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

23:00

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

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

16:39

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

16:42

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

16:44

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

16:45

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

16:48

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

16:50

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

16:53

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

16:55

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

16:57

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

17:01

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

17:02

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

17:03

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

17:05

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

17:07

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

17:08

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

17:10

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

17:12

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

17:14

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

17:15

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

17:17

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

17:18

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

17:19

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

17:20

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

17:22

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

17:23

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

17:24

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

17:26

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

17:28

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

17:29

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

17:33

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

17:35

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

17:37

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

17:39

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

17:40

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

17:41

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

17:43

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

17:47

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

17:50

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

17:54

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

17:54

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

17:57

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

17:59

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

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

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

18:06

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

18:19

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

18:20

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

18:21

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

18:22

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

18:23

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

18:30

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

18:32

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

18:33

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

18:34

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

18:35

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

18:36

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

18:38

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

18:40

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

18:42

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

18:43

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

18:44

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

18:45

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

18:46

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

18:47

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

18:48

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

18:50

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

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

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

18:53

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

19:01

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

19:25

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

19:32

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

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

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

19:43

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

19:45

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

19:47

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

19:50

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

19:52

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

19:54

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

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

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

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

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

20:16

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

20:17

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

20:20

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

21:21

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

21:21

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

21:25

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

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

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

21:50

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

21:52

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

21:55

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

21:56

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

21:57

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

21:58

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

21:59

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

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

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

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

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

22:08

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

22:09

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

22:22

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

22:23

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

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

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

22:31

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

22:33

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

22:35

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

22:38

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

22:39

goo.gl

other