# Понедельник 29 твитов
Всем доброго времени суток! Первую неделю нового сезона с вами Женя Чёрный, мультстек архитектор и в свободное время энтрепренер.
0:05Под мультистэк я подразумеваю работу с open-source стэком (в основном Java) и Microsoft-based.
0:10Применение AI, в частности ML, а ещё конкретнее DNN в различных отраслях и продуктов это один из моих самых горячих интересов
0:14Для затравочки опросик.
"В своей работе я использую.."
Пока получается достаточное предсказуемое распределение ответов. Почему 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. Отмечаемся:
"Я живу и работаю в..."
Если кто не видел эпического выступления Гарри "Watman" Бернхардта на CodeMash 2012: destroyallsoftware.com/talks/wat
3:10Хотелось бы дать перспективу, в которой я рассматриваю MS-стек в моей текущей позиции
5:58Компания поддерживает on-going development 80-ти продуктов в одной экосистеме. Тех стек: Java, .NET, .NET Core, PHP..
6:01MySQL, SQL Server, Postgres, Mongo
6:01И это только по верхам. Требуется построить микросервисную экосистему в мульти-стек окружениии. Нужны критерии для решений, на чем писать
6:03.. какой микросервис, для каких задач эффективнее тот или иной стек, также беря в расчёт доступность и расценки разных ресурсов.
6:04Для разработки .NET микросервисов в гибридном окружение рекомендую Steeltoe.io от Pivatal
10:14Steeltoe предлагает коннекторы к 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)
NoSQL выплыл не как полная замена SQL, а как инструмент для решения задач плохо решаемых (или не решаемых) с SQL
21:41SQL - самый информационно емкий из существующих ЯП. SQL рулил и будет пока рулить в большинстве задач.
21:43NoSQL нужен для решения определенных типов задач.
Вот где он хорош:
1. Big Data.. но реально Big Data. Базы даже в 10-ки TB могут прекрасно держаться на SQL
21:452. Задачи с неструктурированной или полуструктурированный датой (например JSON). Хотя PgSQL прекрасно справляется с этой задачей сегодня
21:473. Full Text Search индексы
21:48Это топ-3, но список не полон.
С каждым днём список проблем требующих NoSQL растет, но остальные задачи до сих пор рулят с SQL
Любую задачу можно решить чистым 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:36Big 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:46Опустимся с высоких материй в повседневные реалии: как писать хороший код? Что такое хороший и "чистый код"?
8:52@backendsecret хорош и чист только тот код, который не стали писать :)
Не поспоришь :-)
Но есть такой принцип "Идеального Конечного Результата" - это когда системы нет, но её функция вып… twitter.com/i/web/status/9…
К сожалению, когда нет кода, нет системы, но её функция НЕ выполняется
9:03@backendsecret Можно было вариант "Код без багов" (жаль что > 4 нельзя) заменить на: "Гибкий расширяемый код" за ис… twitter.com/i/web/status/9…
А как знать заранее, что код должен быть гибким и расширяемым? twitter.com/gorancheg/stat…
9:05@backendsecret не хватает варианта легко поддерживаемый и тестируемый
Легко читаемый в большинстве случаев = легко поддерживаемый.
Тестируемый - это тема для отдельной дискуссии:-) twitter.com/donnainsolita/…
Пока мне очень нравится тенденция ответов. Из этого можно сделать вывод, что с практикой "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:09The later you test, the more it costs to write tests.
10:12The longer a bug lives, the more expensive it is to fix.
10:13Every line of code without tests will be significantly more difficult to debug or rewrite.
10:14TDD 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:341. Писать тест после кода на 50%-200% более трудоемко
20:352. Код написанный после теста имеет сильную тенденцию быть короче
20:363. Тесты написанные после кода имеют значительную тенденцию к низкому покрытию
20:374. Код написанные после теста имеет тенденцию к меньшему кол-ву дефектов
20:385. Отладка кода через запуск юнитеста (вместо поднятия всей системы для каждой итерации) занимает на порядок меньше времени
20:406. Перейти на TDD психологически трудно (и это основной фактор нашей плохой статистики). Пробуйте, не сдавайтесь, плз!
20:437. Перейдя на 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.
Весело, мне понравилось! :-)
# Пятница 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 консенсус.
Короткие итерации "тест-код-тест" дают больше эффекта, любая выбранная техника с длинными итерациями.
По сути в контексте TDD длинные итерации это нонсенс и противоречит методологии. Что только подтверждает закономерность.
19:34Разработчик, практикующий TLD с короткими код-тест циклами может достичь эффекта близкого к TDD.
19:36TDD по определению навязывает короткие код-тест циклы.
19:37При придерживании практики коротких код-тест циклов, выбор между TDD/TLD становится больше делом вкуса, чем холивором.
19:39Дискуссия затянулось дольше чем хотелось бы. Будем менять тему. Есть заинтересованные в или практикующие ML (Machine learning)?
19:47Artificial 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…
@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:53Coursera.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 #AgileAfrica0:05
Едем дальше: DNN - или Deep Neural Network. Network - потому что это по сути граф вычислительных нодов.
0:09Neural - потому что концепт вдохновлён работой нейронов человеческого мозга (хотя аналогия достаточно отдалённая, нейрон сложнее)
0:11Deep - потому что строится много лейеров один над другим. Математически - функция от функции от функции... и т.д.
0:12Важно отметить: DNN это область supervised learning, то есть те задачи, когда при тренировке мы говорим алгоритму какие ответы правильные.
0:14DNN долго и нудно обучается, но потом делает предсказания сама только на основе входных данных без нашего участия
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:27Convolutional Networks побили всех и вся в image recognition задачах.
0:29В 2015 году Сергей Иоффе и компания решили вторую проблему: они предложили способ нормализации данных между уровнями - Batch Norm
0:30В том же году группа исследователей с труднопроизносимыми азиатскими именами предложили концепт Residual Network
0:33Residual Network помогает предотвращать явление затухания сигнала путём перекидывания остаточного сигнала с предыдущих уровней наверх
0:35Также в период 2007-2015 появилось много разработок Recurrent Neural Networks, которые хороши для данных изменяющихся во времени
0:37RNN-в по сути ввели свойства памяти в нейронные сети. Более отточенный концепт это LTSM (long-short-term-memory neurons)
0:38RNN бесподобно работают в Natural Language Recognition.
Очень прикольный пост о RNN от Карпатого - karpathy.github.io/2015/05/21/rnn…
Первую проблему решил Андрей Карпатый (профессор Стенфорда, ныне 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 Очень хорошо пойдёт параллельно Курсере
Подкаст Twiml&AI - отличные еженедельные интервью по разным суботраслям AI:
overcast.fm/+Gooh7TQ5Y
Неплохой ютуб канал от Siraj Ravel - youtu.be/JuLCL3wCEAk хороший практический опыт на Python с TensorFlow.
1:23Хотя иногда его темп выносит мне мозг
1:23Хорошо, теперь можно в глубину. Если есть вопросы, мысли вслух, затруднения - пишите, попытаюсь адресовать
1:25А пока ещё пару забросов насчёт последних событий в исследованиях
1:27В 2017 году вышло очень много работ по Reinforcement Learning.
Проблема: для того чтобы обучить систему, надо много данных. Очень много
Если данных мало, система будет "предвзята". Но собрать больше данных это долго и соответственно финансово тяжело
1:30Reinforcement Learning это все ещё supervised learning, но вместо ответа на каждый пример мы только говорим какая конечная цель
1:31Промежуточные действия система пытается найти сама.
Deep Mind купленный Гуглом пару лет назад преуспел в этом подходе
Для информации: Deep Mind даёт DNNу учится играть в игры Атари, имея только изображение с консоли и доступ к клавиатуре.
1:33Deep Mind обыграл чемпиона мира в китайские шашки Go. Это игра, у которой после каждого хода открывается бесконечное кол-во новых вариантов
1:35Её невозможно просчитать как шахматы: нужна человеческая интуиция. Reinforcement Learning справился с этой задачей
1:36Очень интересный стартап, который придумал новую парадигму языка программирования для AI - bons.ai
1:38Парадигма названа педагогической. Программист формализирует цепочку концептов для reinforcement learning, чтобы сис-ма училась эффективнее
1:40Ещё одна свежая тема: GAN - Generative Adversarial Networks.
Или Генерирующие Состязательные Сети
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:44Word 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:08ReLU практически это наполовину линейная функция, посему работает очень быстро. А также нет изчезновения градиентов.
20:10Но я пока интуитивно вставляю также leaking ReLU: max(0.01x, x), хотя реже.
20:12Какие лейеры, в каком порядке, какой ширины и как глубоко?
20:15Как я уже говорил, теоретически, чем глубже сетка, тем она умнее (могу поискать ссылку на arxiv с исследованием)
20:17Но глубокие сетки начинают на практике терять кач-во и жрут не по детски память и машинные такты
20:18Для того, чтобы сетка не тупила, пользуем batch norm и residual unit.
20:19Batch norm это сути та же нормализация, но не на входе, а между скрытыми уровнями сетки.
20:20Residual 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
- https://goo.gl/eVgU4s
- https://goo.gl/cbaMG3
- https://goo.gl/1qRbfp
- https://goo.gl/ao7ezz
- https://goo.gl/gKg2RB
- https://goo.gl/CXheL7
- https://goo.gl/s9H7Eu
other
- https://www.destroyallsoftware.com/talks/wat
- https://msdn.microsoft.com/en-us/commandline/wsl/about
- http://evidencebasedse.com/?q=node/78
- http://www.sserg.org/publications/uploads/04b700e040d0cac8681ba3d039be87a56020dd41.pdf
- http://digitalcommons.morris.umn.edu/cgi/viewcontent.cgi?article=1015&context=horizons
- http://minimaxir.com/2017/06/keras-cntk/
- http://coursera.org/
- http://karpathy.github.io/2015/05/21/rnn-effectiveness/
- https://arxiv.org/abs/1603.06937
- http://arxiv.org/
- https://arxiv.org/abs/1602.00134
- https://overcast.fm/+JTij3pXTo
- https://overcast.fm/+Gooh7TQ5Y
- https://youtu.be/JuLCL3wCEAk
- https://youtu.be/sZ_-yb-TN9M
- https://futureoflife.org/open-letter-autonomous-weapons/
- http://www.crisprupdate.com/