?

Log in

Лабораторный журнал
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Anatoly Levenchuk's LiveJournal:

[ << Previous 20 ]
Monday, August 3rd, 2015
1:02 am
Об сопоставление вычислительной мощности мозга и современных нейронных сеток
Тусовки модельеров мозга, суперкомпьютерщиков разного сорта, глубоких обучальщиков (программистов, математиков, артигогов -- http://ailev.livejournal.com/1011621.html) бурно обсуждают разные сравнения вычислительной мощности мозга и современного компьютера. Наброс на вентилятор в этой волне обсуждений был тут: https://timdettmers.wordpress.com/2015/07/27/brain-vs-deep-learning-singularity/ (с выводом, что компьютерам до мозга ещё развиваться и развиваться), асимметричный ответ тут https://www.reddit.com/r/MachineLearning/comments/3eriyg/the_brain_vs_deep_learning_part_i_computational/, а дальше пошли клочки по закоулочкам: начали вытаскивать и старинные работы типа http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3767911/ и экономические оценки типа http://aiimpacts.org/costs-of-human-level-hardware/ (в этом материале см. внизу страницы related posts, и там много-много ссылок на другие работы).

Мои две копейки на останов вентилятора:

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

2. В нейронных сетках их целевая работа быстра, эффективна и требует очень мало памяти. Проблема не в работе, проблема в научении. Скажем, человека нужно учить 15 лет в школе и высшей школе. Зато после этого он легко решит какую-нибудь математическую задачку за день. Оценивать нужно не этот день, оценивать нужно те 15 лет, в них вся фишка. 365*15=5475, легко нашли дырку в три с полтиной порядка в оценках производительности. С нейронными сетками то же самое: при нанесении пользы они в тысячу раз быстрей, чем при обучении. FLOPS при этом не волнуют: не все архитектуры позволяют хорошо задействовать эти FLOPS -- архитектуры графических GPU тут не слишком хороши, а мозг тоже никто не проверял, насколько он в этом плане хорош.

3. Как говорил кот Матроскин, средства у нас есть, у нас ума не хватает -- важно, как распорядиться имеющимися FLOPS. То, что в изменениях алгоритмов можно легко найти ещё три порядка, это даже не вопрос. То, что эти самые FLOPS можно аппаратно развернуть в поддержку правильных алгоритмов, это тоже не вопрос. Более того, FLOPS бывают разные -- в сетках необязательна двойная точность, а какой именно минимальной должна быть одинарная точность мы ещё не знаем, и аппаратуру под это ещё толком не подстраивали, идут только первые эксперименты. Более того, эксперименты с аппаратурой "сделаем как в мозге" -- это неправильные эксперименты, это эксперименты с махолётами вместо экспериментов с самолётами или вертолётами.

4. Так что сравнивают бегемотов с апельсинами, удивляются такому разнообразию оценок в наш век точных измерений и научных расчётов. Пустое это. С другой стороны, есть нюх -- этот нюх показывает, что текущей аппаратной базы уже начинает хватать для решения ну очень крутых задач. Если суперкомпьютеры грузануть нейронной сеткой, а не моделированием атомных взрывов, их можно ой сколько чему интересному научить уже сегодня -- если сообразить, чему учить и как учить. Впрочем, Гугль и Фейсбук делают примерно это, только на кластерах с GPU, тоже интересно получается.

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

6. Но и скорость тут не главное: из одной и той же мокрой нейронной сетки (ага, wetware) можно научить Нобелевского лауреата, а можно (если учить будут звери) Маугли -- при этом даже не получится научить говорить, несмотря на всю предрасположенность человечьего мозга к речи. Вот это и есть лимитирующий фактор: нет наборов учебных данных, нет постановки учебных задач, нет понимания, как учить сетку, нет понимания, как комплексировать разное выученное, чтобы добиться универсализма. Тезис Lenat, что при решении большинства интересных задач задействуется неожиданно большое количество знаний common sence, и что по пути Eurisko (даже если ей выдать современный суперкомпьютер) быстро не продвинешься -- этот тезис остаётся верен до сих пор.

7. Хотя я всё думаю, что было бы, если бы взять Eurisko (1982-83) и реализовать её на GTX Titan X -- мне кажется, могло получиться примерно то же, что с нейронными сетками, когда им дали достаточно аппаратных ресурсов: результаты могли бы быть сногсшибающими. Можно было бы сделать "исторический" хакатон -- и тряхнуть той идеологической стариной на новый технологический лад. Learning by discovery может оказаться не такой плохой идеей на современных вычислительных ресурсах. Скорость и размер (памяти) таки имеют значение. Хотя NP-полные задачи и требуют себе экспоненциального роста вычислительных ресурсов, но именно такой рост нам и обеспечивал закон Мура некоторое время. И слишком высоко на экспоненте висящие в 1983 году плоды могут оказаться низко висящими в 2015 (а высоко висящими -- плоды, которые в 1983 году вообще не были видны). За время пути собачка смогла подрасти.

8. Моя оценка (и я её обсудил с разными людьми) -- что мощности сегодняшних 2000 GTX Titan X (это примерно $2млн., не бог весть какой суперкомпьютер) при понимании как ими пользоваться должно хватить для создания реально неглупого компьютерного собеседника (врача, юриста -- это "например"), причём за год. Не хватает сейчас главного: понимания, как такой вычислительной мощностью правильно пользоваться, как модуляризовать результирующую систему (например, как сочетать "жёсткую логику" и "интуицию и аналогии" -- в реальной работе они обе ведь участвуют), как поставить задачу на обучение и где брать для него данные, как тестировать результат. Вот это понимание и может легко растянуться до момента получения приемлемых результатов и на пять лет, и на десять. Плюс за эти пять или десять лет легко может измениться само понятие "приемлемых результатов".

9. Сегодняшняя ситуация такова, что довольно быстро выстраивается новый технологический стек, ряд новых технологических платформ. Нижние уровни (FPGA, GPU от NVIDIA, что-то от AMD, многоядерные процессоры от INTEL), языки (python, lua, c++, новички типа Julia -- языков тут уже хватает, как и везде), спецбиблиотеки (Theano, Caffe, Torch -- их десятки уже, если не сотни) -- и специфика предметной области сидит ровно тут: все настройки и оптимизации из прикладных задач постепенно уползут в эти библиотеки-фреймворки, которые станут скоро толстыми "платформами". Это важно, ибо если мы тут ускорим дело всего на порядок, то стартап чему-то научит свою сетку не за десять лет, а за год за ту же сумму денег. Ну, или за тот же год, но возьмёт на аппаратуру вдесятеро больше денег (если будет знать, как распараллелить это обучение, что тоже не факт).

10. Приложения -- и вот тут, где уже ближе всего к деньгам, тут у нас пока затык. Распознавание речи и аннотация фотографий это хорошо, но именно в области приложений должен произойти прорыв. С переводом с языка на язык (аннотация фотографий, кстати, частный случай перевода -- перевод с видеоязыка на какой-то естественный язык, всё то же самое) уже справляются не хуже, а даже лучше чем при традиционных иерархических парсерах -- https://drive.google.com/file/d/0B16RwCMQqrtdNUptOGtDeDhxZ0E/view, на бирже уже вовсю торгуют с техническим анализом (и пытаются прицепить фундаментальный анализ, хотя бы по открытым источникам), автомобили без водителя -- это про то же самое. Приложений уже тьма, но главные приложения наверняка не придумали ещё. Чемоданы с колёсиками придумали только в 80-х, до этого были только носильщики с тележками. И сложность ещё в том, что мало придумать приложение. Потом это приложение нужно будет научить -- а как его учить? Где брать данные для обучения? Вот это самое сложное. Следовательно, нужно будет как-то предобучать на том, где много данных, а потом доучивать на буквально единичных примерах -- и исправлять потом ошибки как у человека, который тоже на единичных примерах учится, и тоже попервОй учится плохо.

Итого:
-- плевать, сколько мощности у мозга и какой КПД полёта у птички. Нам мощности аппаратуры и сегодняшних алгоритмов уже хватает, чтобы низенько-низенько, но полететь.
-- приложения, как всегда в софте, важнее всего. Способ получения приложений -- не столько кодирование, сколько не-пойми-что на сегодня, артигогика (http://ailev.livejournal.com/1011621.html). Артигоги или как они иногда себя называют, коннекционисты, это то, что становится выше по технологическому стеку, чем программисты. Программисты становятся продолжением аппаратуры, они кодируют общие алгоритмы вместе с математиками, а ближе к пользователям будут уже -- не они, их ручной труд, их ручное кодирование там уже не нужно.
-- технологический стек, где сидят программисты и математики, важен: он может дать (возвращаясь к теме поста) тот порядок или даже пару порядков (а иногда и три порядка) запаса вычислительной мощности, которые позволят обучать приложение на тот самый порядок ли даже три порядка быстрее или качественнее (на выбор), и тем самым побеждать конкурентов. Но главный вывод: технологический стек уже достаточно развит (например, сегодняшняя самая большая наученная сетка -- 160млрд параметров, http://arxiv.org/abs/1506.02338), чтобы (повторюсь) низенько-низенько, но полететь.

А учёные, которые изучают мозг, моделируют мозг, сравнивают мозг с компьютерными чипами -- они учёные, пусть статьи пишут. Сравнивают 160млрд. параметров из самой большой наученной людьми нейросетки с 86млрд.нейронов мозга (http://compulenta.computerra.ru/archive/neuroscience/664455/). Это поможет, например, медикам. Примерно так же, как изучение аэродинамики птичек помогает орнитологам. А авиационщикам помогает изучение аэродинамики не птичек, а их самолётов. Так и создателям нейроприложений поможет не изучение устройства мозга и восхищение его вычислительными возможностями, а изобретение каких-то не связанных с мозгом алгоритмов и улучшение аппаратуры и языков программирования. Бионика хороша для отдельных примеров, она даёт нужную экзотику для научпопа. Бионика для массовой инженерии в больших дозах вредна, она отвлекает.
Sunday, August 2nd, 2015
2:05 am
lytdybr
Отрок ругается с мамой по поводу решения кириенковских задач на Питоне -- оба занимаются этим впервые, ор стоит на всю квартиру, успех в спорах переменный. Сейчас они дошли до половины третьего урока, но одну задачу во втором уроке они таки пропустили - не смогли решить. То есть жена даже нашла в Сети какие-то тесты, но не смогла предложить формулу, покрывающую все тесты -- один случай так и не взялся. Вот эта задачка (только не нужно писать сюда решения комментами, это неспортивно будет для всех идущих за нами): http://informatics.mccme.ru/mod/statements/view3.php?id=3309&chapterid=3483. Помним, что нельзя делать проверок условий, использовать циклы и прочие богатств Питона. Урок называется "целочисленная арифметика", в нём только присваивания и формулы -- нужно просто придумать правильную формулу. Для других задач сын с женой их придумали, а для этой один тест из примерно дюжины не покрывается.

Кстати, прохождение курса на КуМире три года назад чувствуется: идея, что программа должна покрыть все возможные случаи, разъяснений не потребовала. Вместо того, чтобы гонять недоделанные решения через проверялку, отрок честно сидит и придумывает хитрые случаи, на которых код может не сработать. Тем более что проверялка не раскрывает тестовые данные -- просто сообщает, что были непрошедшие тесты.

Я практически не вмешиваюсь. Хотя когда я увидел что-то типа "a < b > c" и мне было заявлено, что всё с этим ОК -- пришлось открыть ему оригинальную документацию Питона и ткнуть, что там написано про это как "perfectly legal", но всё-таки не "pretty". Вообще, внимания к этому pretty никакого привить не удаётся. Может, это только с возрастом приходит. Сейчас вот только выключал компьютер, глянул на висевший там отроковский код и увидел вложение if вместо использования составного условия. Завтра утром устрою очередной разбор полётов, но заранее знаю, что это будет трудно: аргумент "но все тесты проходят, код работает" -- непробиваемый.

После перерёшивания всех задач третьего урока отроку обещана игра Space Engineers. Да, там тоже есть скриптование, аж на C# (http://steamcommunity.com/sharedfiles/filedetails/?id=368216440). И в мае 2015 даже открыли полный исходный код всей игры -- http://blog.marekrosa.org/2015/05/space-engineers-full-source-code-access_40.html. Только я точно знаю, что отрок этим программированием интересоваться не будет, только кнопки жать в каком-нибудь "режиме выживания" (http://www.spaceengineerswiki.com/Main_Page).

А вчера он огромное количество времени грохнул на строительство космической империи в древней игре Spora. Чем выбрал всё своё дозволенное игровое время на много дней вперёд (ну, или на мало дней -- смотря когда одолеет третий урок Питона, всё в его руках).

Сам я грохнул огромное количество времени на русификацию Архимейта. Вчера выпихнул релиз плагина к Archi (http://ailev.livejournal.com/1206397.html), а сегодня обновил все объяснительные тексты с учётом новой терминологии (http://ailev.livejournal.com/988360.html). Заодно собрал эти тексты и отформатировал в вордовом файле, для удобства работы с клиентами. Больше сорока страниц получилось.

Вокруг меня продолжают бушевать синхронии. Сегодня вдруг одновременно мне решили написать двое Павленко (сразу скажу, письма пишут они мне даже не каждый год), их письма на абсолютно разные темы аккуратненько улеглись в почтовом ящике рядышком. Мироздание поэтично, и пишет даже не белым стихом, а с ритмом и рифмой.

vvagr тут устраивал опрос по моей фотографии, где я подписан координатором Московского либертариума -- когда были съемки (http://vvagr.livejournal.com/2094575.html). Съемки были пару недель назад, 17 июля 2015, когда начинался хакатон. Это был кадр из сюжета НТВ, говорю я во дворе здания МФТИ на Климентовском. Самое крутое на съемках было, когда меня попросили проехать на самокате близко мимо камеры, а камеру положили на асфальт для лучшего ракурса. Ну, я сантиметрах в двадцати и проехал. Как я понял, оператору стало даже волнительно. Но этот кадр в сюжет не попал. Попало только то, что я рассказываю про нейронную сетку в каждом телефоне (нейронная сетка в смартфонах уже давно есть, голос распознаёт, и не только, хотя мало кто об этом знает -- кого оно волнует, что у телефона внутри?). Вот весь сюжет про хакатон: http://www.ntv.ru/novosti/1449001
Friday, July 31st, 2015
11:27 pm
Выпущена русификация 1.1 для Archi 3.2.1
Пакет русского языка 1.1 к редактору Archi версии 3.2.1 для стандарта языка архитектуры предприятия OpenGroup ArchiMate 2.1 можно скачать тут: http://techinvestlab.ru/Archi_ru

Редактор Archi нужно брать тут: http://www.archimatetool.com, спецификация стандарта http://pubs.opengroup.org/architecture/archimate2-doc/

Архив пакета нужно распаковать:
-- содержимое папки "plugins" в папку "plugins" установленного редактора Archi.
-- содержимое папки "features" в папку "features" установленного редактора Archi (если папки нет, то создать её рядом с папкой plugins).

Если операционная система компьютера имеет выставленный основной язык русский, то Archi заработает по русски.

Изменения по сравнению с версией 1.0 можно найти в http://ailev.livejournal.com/1205591.html

Словарик основных терминов:
-- ядро в http://ailev.livejournal.com/956829.html
-- дополнения второй версии в http://ailev.livejournal.com/978200.html

Ссылки постов проекта "Архимейт по-русски" -- http://ailev.livejournal.com/988360.html

В этой версии пока не переведены тексты help, но зато переведены все меню и подсказки. Validate Model во всех меню пока будет по-английски, это нельзя исправить в текущей версии Archi.

Предложения и замечания присылайте мне на ailev@asmp.msk.su или комментариями к этому посту -- и большое спасибо тем, кто прислал их в рамках бета-теста!

По просьбе публики: доступно также в https://github.com/TechInvestLab/Archi-rus-pack
7:39 pm
Музыкальный хакаспринт
Музыкальный хакаспринт: тысяча (да, 1тыс.) рок музыкантов играют одну песню (потому и спринт, а не марафон) в чистом поле рядом с маленьким итальянским городком, и всё только для того, чтобы заманить туда выступить других рок-музыкантов (https://youtu.be/JozAmXo2bDE):


Мне даже стало интересно, кто такие Foo Fighters. Вот они, с той же песней, 1999г. (https://youtu.be/1VQ_3sBZEm0):
2:59 am
Инженерия нейронных сеток, ANN engineering
С ужасом осознал, что в "Открытии себя" Владимира Савченко (https://ru.wikipedia.org/wiki/Открытие_себя, http://lib.ru/RUFANT/SAWCHENKO/otkrytie.txt) ещё в 1967 году описывались нейронные сетки, роман и сегодня абсолютно на фронтире! Он ведь не только про клонирование человека и прочий биопанк, он ещё и про конструирование и поведение вычислителей, которые подозрительно смахивают на современные глубокие нейронные сетки:
Значит, схема опыта такая: к входам ЦВМ-12 подсоединяем кристаллоблок о 88 тысячах ячеек, а к входам кристаллоблока - весь прочий инвентарь: микрофоны, датчики запахов, влажности, температуры, тензометрические щупы, фотоматрицы с фокусирующей насадкой, "шапку Мономаха" для считывания биотоков мозга. Источник внешней информации - это я сам, то есть нечто двигающееся, звучащее, меняющее формы и свои координаты в пространстве, обладающее температурой и нервными потенциалами. Можно увидеть, услышать, потрогать щупами, измерить температуру и давление крови, проанализировать запах изо рта, даже залезть в душу и в мысли - пожалуйста! Сигналы от датчиков должны поступать в кристаллоблок, возбуждать там различные ячейки - кристаллоблок формирует и "упаковывает" сигналы в логичные комбинации для ЦВМ-12 - она расправляется с ними, как с обычными задачами, и выдает на выходе нечто осмысленное. Чтобы ей это легче было делать, я ввел в память машины все числа-слова из словаря машинного перевода от "А" до "Я".

И... ничего. Сельсин-моторчики, тонко подвывая, водили щупами и объективами, когда я перемещался по комнате. Контрольные осциллографы показывали вереницу импульсов, которые проскакивали от кристаллоблока к машине. Ток протекал. Лампочки мигали. Но в течение первого месяца рычажки цифропечатающего автомата ни разу не дернулись, чтобы отстучать на перфоленте хоть один знак.

Я утыкал кристаллоблок всеми датчиками. Я пел и читал стихи, жестикулировал, бегал и прыгал перед объективами; раздевался и одевался, давал себя ощупывать (брр-р! - эти холодные прикосновения щупов...). Я надевал "шапку Мономаха" и - о господи! - старался "внушить"... Я был согласен на любую абракадабру. Но ЦВМ-12 не могла выдать абракадабру, не так она устроена. Если задача имеет решение - она решает, нет - останавливается. И она останавливалась. Судя по мерцанию лампочек на пульте, в ней что-то переключалось, но каждые пять-шесть минут вспыхивал сигнал "стоп", я нажимал кнопку сброса информации. Все начиналось сначала.

Наконец я принялся рассуждать. Машина не могла не производить арифметических и логических операций с импульсами от кристаллоблока - иначе что же ей еще делать? Значит, и после этих операций информация получается настолько сырой и противоречивой, что машина, образно говоря, не может свести логические концы с концами - и стоп! Значит, одного цикла вычислений в машине просто мало. Значит... и здесь мне, как всегда в подобных случаях, стало неловко перед собой, что не додумался сразу, - значит, надо организовать обратную связь между машиной (от тех ее блоков, где еще бродят импульсы) и кристаллоблоком! Ну, конечно: тогда сырая информация из ЦВМ-12 вернется на входы этого хитрого куба, переработается там еще раз, пойдет в машину и так далее, до полной ясности.

Я воспрянул: ну, теперь!.. Далее можно абстрагироваться от воспоминаний о том, как сгорели полторы сотни логических ячеек и десяток матриц в машине из-за того, что не были согласованы режимы ЦВМ и кристаллоблока (дым, вонь, транзисторы палят, как патроны в печке, а я, вместо того чтобы вырубить напряжение на щите, хватаю со стены огнетушитель), как я добывал новые ячейки, паял переходные схемы, заново подгонял режимы всех блоков - трудности техническойреализации, о чем разговор. Главное - дело сдвинулось с места!

15 февраля в лаборатории раздался долгожданный перестук: автомат отбил на перфоленте строчку чисел! Вот она, первая фраза машины (прежде чем расшифровать ее, я ходил вокруг стола, на котором лежал клочок ленты, курил и опустошенно как-то улыбался: машина начала вести себя...): "Память 107 бит".
Инженерия была примерно на тех же принципах, что и сейчас: слоёв побольше, связей побольше, а как оно там в итоге разложится -- не так важно, всё равно всё проучится.
когда все ячейки были собраны на панелях и грани микроэлектронного куба представляли собою нивы разноцветных проволочек, на ее растерянный вопрос: "А как же теперь их соединять?" - лихо ответил:
- А как хотите! Синие с красными - и чтоб было приятно для глаз.
В "Открытии себя" всяко подчёркивается, что речь идёт не столько об учёных, сколько именно об инженерах!

Сегодня я на Quora ответил на вопрос про "науку нейронных сетей" (http://www.quora.com/What-is-the-theory-of-neural-networks/answer/Anatoly-Levenchuk) -- науки там нет (если не считать хода на эволюционную физику -- http://ailev.livejournal.com/1197148.html) но плоды этот ход даст не сегодня, сплошные эвристики. Именно так устроена инженерия, она срабатывает даже там, где науки ещё нет. Более того, там и инженерии-то толком нет -- как в те далёкие времена, когда программная инженерия была ещё не инженерией, а невесть чем вокруг computer science.

Напомню, software engineering появилась в 1968 году, после знаменитой конференции NATO -- https://en.wikipedia.org/wiki/History_of_software_engineering). Да, Владимир Савченко написал "Открытие себя" за год до появления программной инженерии, а человек начал шагать по Луне через год после этого. Спиной вперёд тоже начали прыгать только в 1968 (https://en.wikipedia.org/wiki/Fosbury_Flop). Богатое было времечко, год революции. Сейчас, похоже, тоже какая-то "революция" витает в воздухе. Шестерёнки двинулись, колёсики заскрипели.

Сейчас вот data science тоже уже есть, а соответствующей инженерии пока нетути -- нет даже её объекта (не данные же строить!). Если понимать, что обучение нейронной сетки без учителя -- это чистая наука (открытие онтологии, способа описать мир -- неважно, что в этой предметной области это будут называть "фичи", всё это ведь representation learning, http://ailev.livejournal.com/1045081.html), то даже слово "инженерия" можно пытаться опротестовать. Но всё одно речь идёт о создании какой-то целевой системы с заданными свойствами, и включённость в неё какой-то науки по большому счёту инженерной сути дела не меняет.

Но до полного осознания инженерной проблематики ещё далеко. В разговорах про нейронные сетки вовсю поминается их архитектура и и даже проводятся испытания, но мало говорится ещё о требованиях -- даже испытания явно не против требований, да и архитектура тоже часто не фокусирована требованиями. То есть это инженерия, но не совсем ещё системная, это "какая-то" инженерия. С другой стороны, движение в сторону системной инженерии нейронных сетей уже началось: в той же Quora на вопрос про "самый лёгкий способ выучить машинное обучение" отвечают советом одновременно научиться и machine learning и инженерии и совместить оба этих знания в работе (http://www.quora.com/Whats-the-easiest-way-to-learn-machine-learning/answer/Cory-Hicks-1).

Глубоки нейронные сетки сегодня "крафтят", это ремесло, искусство, набор трюков. Но мы же знаем, что будет дальше? Нужно отчудить метод, сделать его передаваемым (сейчас передают не столько метод, сколько опыт -- как совокупность "трюков").

Нет, речь не идёт о neural engineering (https://en.wikipedia.org/wiki/Neural_engineering), где традиционно путают птичек с самолётами -- живые нейронные сетки и искусственные нейронные сетки. В neural engineering цель создания сеток не столько обеспечить решение какой-то проблемы для стейкхолдера, сколько "наиболее точно отмоделировать настоящую нейронную сеть настоящего мозга".

Нам нужна artificial neural network engineering, создание искусственных нейронных сетей для использования их в продуктах и сервисах -- типа вчера объявленного переводчика надписей в смартфоне (да, перевод надписей со вчерашнего дня больше не выполняется на серверах Гугля, достаточно процессора самого телефона -- http://googleresearch.blogspot.ru/2015/07/how-google-translate-squeezes-deep.html).

Это обычная инженерная работа, но она не совсем сводится к классической программной инженерии. Это такая очень специфичная программная инженерия, существенная её специализация. Возможно, там и название будет другое (так, вместо engineering в англоязычных текстах часто используют design -- neural network design). Более того, неизвестно сколько просуществует эта дисциплина: вон, вебмастеринг продержался всего лет пять-шесть (и будет смешно, если для нейронных сеток тоже появится на несколько лет профессия "нейромастер" или "сетьмастер").

Эх, интересное сегодня времечко. А ведь о самом вкусном в нейронных сетях почти ещё и не говорят:
-- мультимодальность: одновременная работа с разными неструктурированными и разными структурированными данными в комплексе (чтение нейронной сеткой книжки с текстом, картинками, таблицами и формулами -- под чьи-то голосовые разъяснения и с обращением в какие-то реляционные и графовые базы данных)
-- обучение без учителя, метамоделирование (сетка-как-учёный: нужно найти компактное описание какой-то предметной области, построить её онтологию, метамодель).
-- сетки строят себя сами (с генерацией программ в компиляторах получилось хорошо, а вот генерация прикладных программ не так успешна -- кодогенерация ещё не слишком распространена. Посмотрим, что будет с нейронными сетками в этом плане: как нейронные сетки будут порождать и настраивать другие нейронные сетки)
-- выдача команд в реальном времени, диалоги и т.д. (переход к рекуррентным сеткам и обучению с подкреплением). Вся роботика сюда попадает, а заодно и медицина (рекомендация лечения).
-- работа с памятью и вниманием (хотя это совсем не похожие на человеческие память и внимание, но вот, например, свежатинка из этой области: резко улучшили качество перевода: http://devblogs.nvidia.com/parallelforall/introduction-neural-machine-translation-gpus-part-3/)
-- ...список можно продолжать и продолжать.

Растёт и качество самих сеток:
-- предлагаются массово-параллельные архитектуры (сейчас алгоритмы нейронных сеток не слишком хорошо распараллеливаются -- и нужны специальные усилия, типа http://arxiv.org/abs/1507.04296). Про аппаратуру для этого я уже писал, например про FPGA тут: http://ailev.livejournal.com/1204705.html
-- появляются архитектуры быстрого научения для очень глубоких сеток (http://arxiv.org/abs/1507.06228). Кстати deep должно переводиться не как "глубинная", а как "глубокая" -- это означает многослойность, а не нахождение на глубине (мелкая/shallow сетка однослойна). Ну, и не нужно забывать, что глубокими бывают не только нейронные сетки (хотя есть тенденция все deep architectures сейчас называть нейронными сетями, там бывают и другие звери, которые на нейроны непохожи вовсе. Но от прилипшего ещё "от мозга" слова уже не отделаешься. Вот, гляньте на короткий списочек архитектур в https://en.wikipedia.org/wiki/Deep_learning, и это совсем неполный список, это ж википедия).

Сильно напоминает развитие информатики в 50-х: ламповые компьютеры и всё крайне медленно, фортран ещё не изобрели, но зато доказано много математических теорем об универсальности подобных вычислений и уже есть архитектура фон Неймана. Сейчас тоже доказано много математических теорем об универсальности нейросетевых вычислений (универсальность представления функций -- http://neuralnetworksanddeeplearning.com/chap4.html, эквивалентность машине Тьюринга -- http://binds.cs.umass.edu/papers/1995_Siegelmann_Science.pdf). И тоже пока нет какого-то более-менее универсального языка описания архитектуры и настройки гиперпараметров (хотя все эти Caffe и Torch как раз шаги в этом направлении -- в развитых библиотеках программ есть что-то похожее на специализированные языки задания сети). И всё крайне медленно и не масштабируется, как на лампах. Но уже какие-то задачи можно решать.

К чему это я? А к тому, что для этой инженерии искусственных нейронных сетей (artificial neural networks engineering, ANN engineering) и основанных на ней систем всё одно потребуется системноинженерное мышление. И в мой потенциальный учебничек-трёхтомничек правильно было бы включить ещё один раздел -- по глубоким архитектурам (прошлый список разделов я писал год назад -- и даже нейронет там был, но нейросеток ещё не было: http://ailev.livejournal.com/1136987.html. Впрочем, там и разворота к технологическому менеджменту тоже не было ещё).

Хотя вряд ли я немедленно начну писать очередную книжку -- книжки дело неблагодарное. Хватит пока и постов в блоге.
Wednesday, July 29th, 2015
11:44 pm
Архимейт по-русски 1.1 -- бета готова
Сегодня я закончил новый перевод Archi 3.2.1, обозвал его версией 1.1 (версия 1.0 была выпущена три года назад -- http://ailev.livejournal.com/988360.html).

По сути, это третья редакция перевода:
-- первая была формальная, и все стандартнаци были очень довольны. Уже в первой редакции я максимально согласовал с уже имеющейся терминологией переводов ISO 42010 (Архимейт на нём базируется). Эта редакция так и осталась внутренней, плагина к Archi я для неё не публиковал.
-- после тестирования на клиентах я решил резко сбить пафос и убрать по возможности канцелярит-стандартит. Основной аргумент был: деньги за реализацию архитектуры платят те люди, которые айтишных стандартов не читали, но они должны хотя бы что-то понимать из ведущихся разговоров, хотя бы полпроцента. В этом виде и вышла версия 1.0 плагина к Archi (глоссарий -- http://ailev.livejournal.com/956829.html, дополнения второй версии -- http://ailev.livejournal.com/978200.html).
-- третья версия 1.1 выйдет сейчас, и я продолжил там гнуть ту же линию снижения пафоса и укорочения говорения. Профессионального сленга стало больше, на лёгкие проблемы я сознательно махнул рукой (ибо решение этих проблем, которое я пытался реализовать в версии 1.0 было хуже, чем сами проблемы), плюс учтён опыт прошедших трёх лет -- и несколько источников ошибок я постарался исправить на уровне выбора слов.

Вот главные изменения:

1. Я перестал добавлять ко всем словам название уровня. Не "объект деятельности", и даже не "оргобъект", а просто "объект". Не "процесс деятельности", и даже не "оргпроцесс", а просто "процесс". Хотя там, где одинаковые слова для похожих элементов разных уровней, я уровень оставил -- оргсервис, программный сервис и сервис "железа".

2. Уровень Business-"люди" стал "деятельностью" (не будем беречь этого слова, потратим его свободно. Busniness -- это "дело", "деятельность"). Но в некоторых местах я вместо длинного "деятельность" даю короткую приставку "орг" -- тот же оргсервис. И всё-таки я не стал называть уровень "организационным". Три уровня деятельность-"софт"-"железо" звучат для меня более понятно, нежели организация-"софт"-"железо", ибо про деятельность того же софта я сказать не могу, а вот про организацию софта -- запросто. Но оргсервис я не перепутаю с программным сервисом, поэтому не просто "сервис", и не длинно "сервис деятельности людей" (по мотивам прошлой версии перевода), а "оргсервис", ибо короче и понятней.

3. Уровень оборудования стал уровнем "железа". А заодно Node-оборудование стало "железом" (если говорить о единице оборудования -- будет единица "железа"). "Железо" пишем в кавычках. Я с клиентами в "реальном секторе" неоднократно натыкался на то, что они подолгу не понимали, о каком я говорю оборудовании -- о том, которое в их информационных системах, или в котором их информационные системы! А уточнять каждый раз, что "айтишное оборудование" -- это длиннее и не менее сленгово, чем просто "железо".

Так что было Infrastructure usage-"использование оборудования", стало "использование "железа"", Infrastructure function стал функционалом "железа", а не оборудования, а Infrastructure interface стал интерфейсом "железа".

4. Уровень программ стал уровнем "софта". А Application Component-"программная компонента" стала "программой". Описание программы (инкапсуляция, интерфейсы, реализация файлом и т.д.) чётко указывает на то, что речь идёт именно о программном модуле. Компонента там по смыслу -- "программный функционал", на выполнение которого назначается модуль. Так что слово "компонента" просто опущено.

Ну, и Application Behaviour -- работ "софта" (а не работа программ), Application Cooperation -- взаимодействие "софта", Application Structure -- структура "софта". Там, где говорится о множестве программ, где используется собирательное понятие, там "софт".

Но не "софтовый" сервис, а "программный сервис", не "софтинка", а "программа", не функционал "софтинки", а "программный функционал" -- где имеется ввиду не весь "софт" предприятия, а одна или программа или небольшая группа программ.

5. Крутейшее изменение, которое касается и ISO 42010. View (помним, что в стандарте veiw группирует входящие в него модели) переобозван из группы описаний просто описанием. Да, там нюансы. Так, архитектурное описание (description) само состоит из разных тематических групп описаний, а элементарными описаниями являются "модели" (models). По мне сегодняшнему, так это очередная попытка навести разнотиповую иерархию там, где просто специализация типа. Ведь определение системы противопоставляется описанию системы (description -- все view вместе), которое делится на тематические описания типа архитектурного -- и уже это вполне себе view. А затем view делятся на маленькие подвьюшки -- модели. А в Archi description называется Total veiw, низовых моделек нет вовсе. И слово "модель" там занято, по смыслу это как раз definition (видеть модель можно, только вынеся на какую-то диаграмму-описание или в специальном окошке диаграммы дерева-модели -- и как называется это окошко? Правильно, тоже view).

Итог: группа описаний стала просто описанием. Есть определение, а есть описание. То, что в Archi view-окошко программы и ArchiMate view обозначаются одним словом -- это ничего, это нормально. Так что там иногда путается в переводе "закрыть окошко" и "закрыть описание".

Ах, насколько же стало проще и понятней!

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

6. Actor-люди стали "ответственными" -- это прямой реверанс в сторону DEMO (у них там те же Actors: те, кто имеют право что-то попросить или выполнить. Это и есть суть организации: разделение полномочий и ответственности). Тут тонкость: в организации есть обычно не два (как в Архимейте), а целых три объекта:
-- должности, подразделения -- вся органиграмма (ответственности)
-- роли по отношению к деятельности (они связаны с практиками: в ArchiMate одна практика -- одна роль)
-- люди (или их группы), занимающие должности и выполняющие в этих должностях (профессиональные, по отношению к деятельности) роли.

Архимейт явно проговаривает, что никаких конкретных исполнителей ролей в нём не предусмотрено, Actors главным образом используется для выражения органиграммы. А "ответственный" обычно ещё и несколько ролей играет, ибо назначен явно не на одну практику. И вот поэтому переводим "ответственный" (главный инженер, департамент закупок и т.д.), а не просто "исполнитель".

7. Product (который я в прошлый раз честно оставил "продуктом") надёжно всех сбивает с толку -- это "банковский продукт", "страховой продукт", но в реальном секторе каждый раз удивляются, почему Арчи не позволяет поступать с ним как с продуктом, как будто он какие-то работы (activity), а не продукт! Да, ArchiMate определяет product именно как service+contract! Вот он и ведёт себя как оргсервис при моделировании! Так что я назвал его хитро: оргсервис-продукт, чтобы прямо из названия следовала аналогия с "банковским продуктом".

Парное к нему соглашение об уровне сервиса (contract) я так и назвал полностью, чтобы дополнительно прояснить эту засаду с оргсервис-продуктом как сервисом -- "соглашение об уровне сервиса". Архимейт 2.1 тут странен: в тексте подробно говорится, что чаще всего тут SLA, а иногда другие типы контрактов. А элемент назвали контрактом. Я перевёл по наиболее частому случаю, строго по стандарту! И приписал в подсказке, что могут быть и другие виды контрактов.

8. Stakeholders стали из заинтересованных сторон просто "стейкхолдерами". Язык развивается, и это нужно учитывать. Слово компьютер постепенно заменило слово ЭВМ, и тут ровно такой же случай.

9. Requirements по более тщательному рассмотрению стало не требованиями (ещё можно говорить про требования к "софту" или "железу", но про деятельность редко говорят в терминах требований), а... контрольной точкой. Это удивило и меня самого.

Идея, что это "задачи" из "целей и задач" -- тоже не проходит. Слово "задача" в части противопоставления целей и задач каждый трактует, как хочет -- каждый ведь много раз участвовал в пустопорожних спорах по формулированию "целей и задач" в каком-то важном документе и попытках определить, чем же отличаются цели от задач (о, я знаю уже много "самых верных пониманий" -- в каждом коллективе они складываются свои).

Почему "контрольная точка"? В контрольной точке же явно оттенок команд-глаголов из "управления кейсами", а не декларативная чисто инженерная запись о "требуемом свойстве"!

Ну, Goal (а requirement это по сути декомпозиция Goal) там тоже SMART-цель с ярко выраженным глаголом-командой. "Увеличить продажи на 20% к 3 января" -- цели все такие. И requierment, из них следующие тоже все имеют этот оттенок требуемого действия, а не требуемого пассивного свойства. Это требование действия, требование изменения. И даже стандарт говорит, что для достижения целей нужен план, и именно для этого служат requirement (но тут же стандарт сбивается, и продолжает говорить про "свойства системы").

После внимательного рассмотрения примеров (и особо замечания Gerben Wierda, что всякие контроли моделировать нужно requirements -- то, что требования контролируются, было и так понятно, но он уточнил, что сам контроль моделируется элементом requirement!), а также принимая во внимание тренды в части кейсов (контрольная точка становится элементом контроля, соединяющим требования и выполнение работы -- поскольку требования выполняются сейчас асинхронно, то в каждой контрольной точке указывается условие её достижения, фрагмент требований). То есть контрольная точка -- это тот самый синтез элемента плана и требуемых свойств, о которых говорит данный пункт стандарта.

Я писал в http://ailev.livejournal.com/1202776.html -- "Планируются события как чеклисты (к продуктам) и контрольные точки (состояния продуктов в проектах)". Вот события предприятия ("архитектуры") в ArchiMate планируются через Event, а события развития ("с архитектурой") планируются через удовлетворение requirement, контрольные точки. Так что эта логика case management попадает теперь и в дополнение целеполагания.

10. Presentation из "представления" стало "рабочим продуктом" -- объект в ArchiMate это "информация", альфа. Так что информация никак не представлена. Но она может быть представлена в данных и затем артефактом (но это уже чисто айтишные заморочки -- невидимые в деятельности), а в деятельности альфа представляется рабочими продуктами (одним или несколькими). Формулировки и объяснения стандартов ArchiMate и Essence тут весьма близки. Так что я просто учёл тут результаты наших работ с Essence.

11. Driver стал из "фактора влияния" интересом (concern). В ArchiMate, впрочем, об этом прямо говорится -- и про связь со стейкхолдером, чей этот интерес. Миром движут интересы, всё правильно. Замечание, что может быть и просто "какой-то внешний фактор" игнорируем: это означает, что интерес к фактору есть, и по норме дальше мы просто должны понимать, чей этот интерес. Но можем, конечно, не указывать, чей интерес какое-нибудь "падение рынка", язык вполне допускает тут расслабиться. Но я бы не рекомендовал расслабляться, и подумать, кого это может из стейкхолдеров волновать. Так что тут я просто чуть-чуть подправил перевод в сторону чуть более строгого системного подхода.

12. Gap стал "различием" (из "расхождения"). To be и as is не "расходятся", а "различаются".

13. Deliverable из "комплектующего" (что более пристало инженерным, а не орг-работам) стал "результатом пакета работ", практически по тексту стандарта.

14. В большинстве случаев в интерфейсе я начал писать не "ошибка при открытии файла", а "ошибка открытия файла" -- и по этому же шаблону все остальные подобные выражения. Тут, конечно, можно открывать холивар, но это явно не самый большой грех этого перевода. Хочется, хочется быть поближе к народу!

Технически сейчас ситуация такая:
-- переведено уже всё (пользовательский интерфейс+подсказки), кроме хелпа. Хелп я переводить не буду.
-- есть техническая проблема: время от времени вдруг вместо перевода показываются английские слова (иногда это при перезапуске Archi исчезает, иногда остаётся). Эту проблему буду решать в ближайшие дни -- я думаю, что-то там не то с версиями Eclipse, я сделал запрос автору Archi (ну, или придётся тут поискать какого-то местного знатока локализации в Eclipse). В принципе, основное там уже всё по-русски, и все эти вкрапления английского не слишком мешают. Тем не менее, публиковать версию пока рано. UPDATE: всё уже исправлено.
-- готов отдать language bundle для Archi 3.2.1 на бета-тестирование прямо сейчас -- под обязательство потыкать и прислать мне какие-то замечания в ближайшую пару дней. Для этого напишите мне на ailev@asmp.msk.su
Monday, July 27th, 2015
9:37 pm
Мой домашний STEM
Пару дней назад отрок вернулся из лагеря и заявил, что больше скучать во всякие лагеря он не поедет. Ибо там думать вообще не нужно было, только заставляли бегать. Самое новое, что он там узнал -- что плечо от попадания в него пейнтбола не будет потом полгода болеть, все эти ужасы про пейнтбол только легенды. "Уж лучше в школу ходить, чем в лагерь" -- никак такой фразы от него не ожидал, ибо ехал он туда как раз поиграть-побегать и мечтал, что "никаких домашних заданий, никаких задач". Ну, всё познаётся в сравнении. Теперь у него есть опыт скуки, до этого мы ему скучать долго не давали.

Сегодня он сдал задачи первого урока по алгоритмике дистантного курса Дениса Кириенко. Пошли по полному курсу http://informatics.mccme.ru/course/view.php?id=156 на Питоне 3.4 (там есть ещё и сокращённый вариант онлайн-среды http://pythontutor.ru/, но пока этим не пользовались).

Жена тоже начала проходить этот курс -- вместе с отроком. Интересно, насколько её хватит.

Затем будет продолжение курса алгоритмики, но уже "олимпиадного" уровня -- http://foxford.ru/courses/141.

Так что пока в работе две связки: "на базе математики проходим физику" и "на базе математики проходим информатику". При этом физика и информатика между собой останутся не связанными, нужно потом будет придумывать для их увязывания какой-то проект по созданию киберфизической системы (но при этом опять же не всё просто: для такого проекта неплохо бы ещё и системноинженерное мышление дать -- но это всё мечты, в сутках у отрока всего 24 часа).

Так что к концу лета должны быть:
-- математика на уровне физматшколы за 7й класс (по факту -- уже, только повтрять, чтобы не выветрилось из головы)
-- физика на уровне заочной физматшколы МИФИ за 7й класс (по факту там освоено сейчас порядка 20%, ведь в июне была летняя школа МФТИ)
-- алгоритмика на уровне физматшколы за 8й класс (один урок из 16 сдан, то есть по факту сейчас знания 0% -- я считаю, что знания курса алгоритмики на Ершоле, которые он получил в третьем классе, уже давно выветрились. А знания по программированию Arduino на Wired и Scratch тоже эквивалентны 0%).

Про английский пока сознательно забываем, не до него пока.
6:12 pm
Может ли самолёт летать (как птичка!), может ли машина мыслить (как человек!).
Как только компьютерная программа демонстрирует поведение сложнее калькулятора, то ей сразу навешивают сравнение с именно человеческим разумом -- и там тупик пустопорожних разговоров (про разум молотка, или экскаватора -- и по какому пути его неведомые инженеры должны были бы делать по мнению очередного не-инженера). С психологическим, социологическим, экономическим и прочим гуманитарным аппаратом к задачам современного слабого искусственного интеллекта (это термин, но я уже зарёкся его использовать, он как масла в огонь подливает каждым словом -- и "искуственным" и "интеллектом" и даже "слабым", мало ведь кто знает его изначальное значение. Но увы, нового слова для данной предметной области пока не придумали) подходить нельзя, вредно. Нет задачи смоделировать именно человеческий или животный или инопланетный разум, есть задача научить компьютер решать отдельные классы сложных задач.

Даже поговорить о смысле жизни -- это просто сложная задача, никакого разума, никакого интеллекта не подразумевает. Обсуждать можно лишь содержание высказываний, ничего более. Если машина слишком врёт, дообучить её (скормить какой-нибудь дополнительный текст, а хоть и от психологов). Но никак не антропоморфизировать молотки и будильники и дальше нагонять страху, как это делают в попсовых статьях типа http://rusbase.vc/story/eto-zhenshina/ (там даже заголовок "Искусственный разум от Google заговорил. И это женщина").

Журналисты -- зло. Им покажешь молоток, а они ему приписывают злобу и ненависть, а также выражение лица рукоятки, с которым она направляет боёк не на гвоздь, а на палец. С умными железками, напичканными софтом, всё то же самое. Покажешь журналисту, или психологу, или литератору и уж тем более философу (а иногда даже и программисту! тоже ведь философски настроенные натуры бывают!) интересную программу -- ей тут же навесят человеческий разум, женскую сущность. При этом всё навешиваемое убедительно и конкретно опишут (профессиональные же писатели, властители дум!) -- и тут же прибегают толпы самых разных троллей и начинают мочить, мочить, мочить непонятно кого по надуманному поводу. А журналисты -- это профессиональное зло, они вызывают бурные философские дискуссии о ни о чём. Ты им говоришь "нет никакого скайнета в молотке", а они тебе будут задавать три десятка вопросов, чтобы хоть что-то бодренькое из фильма-ужастика было. Много вы знаете игр и кинофильмов, чтобы никого не убивали-грабили-насиловали? Я понимаю, иначе "не продать". Так вот не нужно таких продаж для "умных программ". Не нужно требовать от самолёта птичности, а от программ полноценной (то бишь человечьей -- включая всю человечью универсальность, равно как и дурость) разумности. Самолёт должен летать, но не как птичка -- его задача не насекомых в воздухе хватать! А программы должны решать сложные задачи -- но не как человек, им увязывать личную жизнь с работой не нужно, и демонстрировать универсальность и всеохватность разума тоже никому не нужно.

Дополнительно см. комменты к посту http://ailev.livejournal.com/1204972.html -- там мысль простая: мы пришли в такие времена, когда вместо "поболтать на философские темы" нужно просто закатать рукава, и годик-другой поработать. А потом спланировать следующий шаг. Ибо learning by discovery -- нарыли новые удачные классы алгоритмов и вычислительных архитектур, давайте их поисследуем. Можно поглядеть ещё длиннющую дискуссию тут, я тоже там поучаствовал немного: https://www.facebook.com/groups/nevronet/517636148402711/ (там топик тоже хорош -- "инженеры разрабатывают первый рабочий прототип компьютера-мозга", для меня это звучит как "инженеры разрабатывают первый рабочий прототип самолёта-махолёта").

У нас не философская и не научная задача. У нас чисто инженерная задача: изобретение самолётного типа думалки для сложных задач -- холодной, железной, грузоподъёмной и летящей на 8.5тыс. км без перезаправки, а не думалки птичной -- мясной и несущей яички, а также громко чирикающей и приземляющейся на веточку дерева. У нас не теоретическая машина тьюринга (в которой нет, например, прерываний), у нас не китайская комната (мы другого сорта задачи решаем!) -- я думаю, после демонстрации каких-то достижений нейронных сетей придётся переосмысливать все эти расхожие попсовые байки про "разум".

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

Боюсь, что опять недостаточно.
Sunday, July 26th, 2015
4:52 pm
Хакатон deep.hack -- всё получилось!
В финал хакатона http://deephack.me (новости в https://www.facebook.com/groups/DeepHackGame/) вышло 8 команд, которые 8 раз продемонстрировали обыденность того, что ещё год назад программисты назвали бы чудом (при этом настаивая, что "чудес не бывает").

Посудите сами: команды должны были разработать программу, которая должна научиться играть в аркадные игры на Atari 2600, просто смотря на экран и понимая там происходящее. Какие игры? А все. 39 доступных на данный момент игр. Настроиться на какую-то игру невозможно, проверяется как раз возможность программы научиться играть "вообще". Вот фрагмент правил (http://info.deephack.me/?p=102):
Во время отборочного тура алгоритмы участников тестируются на трех играх, выбранных организаторами.  Игры для тестирования не меняются в отборочном туре. Восемь команд, показавших лучший рейтинг, отбираются в четверть финал утром 24-го июля. После объявления результатов отборочного тура организаторы называют 3 новых игры, по одной игре для четвертьфинала, полуфинала и финала. Команды, прошедшие в финал, должны обучать своих агентов на новых играх без изменения кода обучающихся алгоритмов. Тестирование решений происходит по стандартной схеме.
Нет, вы поняли?! Алгоритмы обучения делаются на одних играх (и поэтому участники тут могут хоть на что-то влиять, "подгонять под результат"), а соревнования происходят на совсем других играх -- но без изменения кода программы! А игры настоящие, не "адаптированные для игры компьютером". И заранее под все игры не подгонишь, игр-то аж 39 -- поди догадайся, какие три из них будут в финале!

Традиционные методы программирования тут бессильны: такое ни за неделю, ни за три года сделать нельзя. И в командах-то по 3-7 человек, это не огромные исследовательские институты!

Нейронные сетки, подготовленные участниками хакатона за прошедшую почти бессонную неделю, вполне справились. Торжество обучающихся нейроморфных архитектур перед ручным программированием. За неделю можно настроить архитектуру нейронной сетки, но уж никак нельзя написать универсальный алгоритм, который может а) научиться играть в аркадные игры за несколько часов, а затем б) сыграть в эти игры, прорвавшись через много уровней -- и часто сыграть даже лучше, чем игроки-люди. При этом у участников хакатона ещё и время на прослушивание лекций уходило, они не только программировали! Ибо "солдат спит, служба идёт": когда программы учатся, программисты отдыхают. А если программы не учатся, то программисты впахивают: почувствуйте разницу в подходе к software engineering!

Некоторые выводы по итогам хакатона:

1. Это всё настоящее, нейросетки пришли, чтобы остаться (подробней я говорил в своём двухчасовом докладе на хакатоне -- но поглядите хотя бы ссылки на слайдах: http://ailev.livejournal.com/1204460.html).

Я надеюсь, что останется так же и команда, которая подготовила Deep.hack, и мы увидим от неё мероприятия ещё круче (хотя куда уж круче: вполне международного масштаба мероприятие, больше сотни участников -- от впервые познакомившихся с предметом студентов до нескольких звёзд первой величины).

2. Порог вхождения снизился в разы (доступны книги, учебные курсы, онлайн-тьюториалы, готовые программные библиотеки, какое-то железо "для проб" уже есть на любом игровом компьютере, проходят конференции и хакатоны). Из категории rocket science многие и многие задачи переместились в недельное развлечение, подходящее для студенческого хакатона. Кто б мог подумать от таком повороте ещё год назад!

3. Размер железа имеет значение. 3 часа у вас на обучение или (как у DeepMind в их оригинальной работе) 6 дней, при этом на дохленьком или мощном GPU -- это оказывается важным. Ибо играть быстро, а вот учиться играть -- это медленно, а при отладке нужно учиться много раз. Даже когда обучением и отладкой займутся сами нейронные сетки (идея компилятора жива и тут: код должен не писаться руками, а генерироваться, да ещё и с оптимизацией), вычислительная мощь будет иметь значение. В конце концов, основные принципы нейронных сеток были известны десятилетия назад. Но десятилетия назад нельзя было прогнать 1млн. кадров экрана за три часа, чтобы научить на хакатоне программу играть в Seaquest -- https://www.facebook.com/groups/DeepHackGame/permalink/505250676295368/

Я только что написал, что и работа с железом тоже может быть выведена на хакатонный уровень, с железом сейчас тоже много интересного происходит: http://ailev.livejournal.com/1204705.html

Железо "под ключ" в промышленных количествах для по-настоящему времяёмких задач уже есть, если брать не традиционную сейчас 1 плату GTX Titan X на desctop компьютер, а подрядить рендерную ферму. См., например, https://ru.rebusfarm.net/ru/, http://www.ranchcomputing.com/en/features/supported-softwares, http://www.rayvision.com/en/cloud-rendering.html и т.д., их ой-ой-ой сколько, они с удовольствием помогут новому молодому рынку! Делайте ставки: когда в составе услуг рендерной фермы появится поддержка обучения нейронных сеток?

Про суперкомпьютеры я молчу, пусть военные со своими эмбарго возятся сами. Game industry и industry по производству спецэффектов для кинофильмов вполне удовлетворят все гражданские аппетиты. Самое дешёвое и доступное на сегодня железо придёт оттуда.

4. Новая компьютерная архитектура пришла не по линии фон-неймановской против гарвардской против ещё подобной. Нет, там оказалось совсем другое, на совсем других математических и даже физических (http://ailev.livejournal.com/1197148.html) принципах. Нейроморфные архитектуры потребуют совсем другой computer science, совсем другой software engineering. Тут ещё не ступала нога человека. Deep learning engineering, deep learning process (по аналогии с software process) -- ах, сколько всего мы услышим на эту тему в ближайшие годы!

5. Convolution NN -- это статика, видеокадры. Recurrent NN -- это ритм, время, синтаксис развёртки текста, конструктивизм. Но reinforcement learning (дрессировка, обучение с подкреплением) -- это деятельность, планирование, достижение целей. Только reinforcement learning может выучить (отмоделировать), что для попадания во Владивосток из Москвы нужно выйти сначала из квартиры в прямо противоположном направлении, потом долго разными видами транспорта добираться до аэропорта, и только потом уже направиться во Владивосток. Вот reinforcement learning и нужно продолжать заниматься, всё остальное будет управляться им. Именно reinforcement learning даст целенаправленность, даст диалог.

Мы обсуждали, что если добавить аппаратуры и результаты RNN по генерации текста поставить под контроль reinforcement learning, то можно получить агента-спорщика (и функция вознаграждения/подкрепления тут -- выигрыш в споре путём логических аргументов и вскрытия логических ошибок соперника). А почему бы и нет?! Главное, метлой гнать всех журналистов, желающих что-то эдакое написать про искусственный интеллект и бесчеловечность компьютерных споров (бесчеловечность калькуляторных расчётов и бесптичность полёта самолёта их уже не волнует), гнать философов, рассуждающих про "истину, рождающуюся в дискурсе" и т.д.. Ничего личного, решение простых когнитивных задач, это просто такое программирование-в-профиль, бывшие программисты-физики-математики вполне тут могут попробовать свои силы. Когда программирование только-только появилось, в него довольно много людей самых разных профессий шло с естественнонаучным и инженерным образованием -- но не философов и журналистов. Так же будет и сейчас.

6. Можно даже поглядывать на то, как устроен мозг: нынешних знаний для "поглядывания" уже хватает. "Поглядывать" нужно так же, как авиастроители поглядывают на птичек: у самолёта и птички есть крылья, но вот уже ног у самолёта нет, а есть только шасси. Насчёт клюва не знаю, на разных языках наверняка по-разному. Вот и с нейронными сетками так же должно быть: нейроны есть везде, но бионейрон с синапсами отличается от нейрона в GPU так же, как птичкино крылышко с пёрышками и костями внутри отличается от самолётного крыла с топливом внутри и подвешенными гондолами двигателей. Вот так и будем "конструировать вприглядку", не буквально.

Нейрофизиологов, которые лезут с буквальным повторением мозга посылаем туда же, куда журналистов и философов: нам нужно поговорить с программой, а не искусственным интеллектом, настоящим аналогом живого мозга или ещё какой-то химерой. С программой, типа Siri или Cortana, ничего сверхъестественного.

Хотя да, мечтать о таком и понимать, что такая "беседа с программой" может оказаться доступной в ближайшие годы -- это волнительно. Такая программа не может идти ни в какое сравнение с ботами, проходящими сейчас тест Тьюринга. Такая программа вполне сможет учиться, учиться и учиться. Такая программа вполне может сказать что-то оригинальное, чего и представить не могли её разработчики. Сама возможность говорить о такой программе -- это настоящее чудо, типа разговора в 1961 году о программе Apollo. А в 1969 году человек впервые прошёлся по Луне. Так что с нейронной сеткой, которая в разы и разы умней нынешних Cortana и Siri мы побеседуем уже очень быстро. И сеток таких будет много. И обыватели чудесности происходящего даже не заметят, ибо это "всего лишь программы", по виду, цвету, запаху они не похожи на скайнет, терминатора и агента смита.

ОК, ЖЖ, публикуй это.

Хотя нет, погоди. Ещё научпоп и светская хроника.

Финал проходил в политехническом музее на ВДНХ (павильон 26 -- https://polymus.ru/ru/museum/about/venues/vdnkh/). Почему-то никто не обратил внимания на то, что там был целый стенд, посвящённый истории нейроморфного компьютинга. Вот я сделал в тамошнем музейном полумраке фотографию платы с Ni1000 -- Intel/Nestor Recognition Accelerator (http://www.warthman.com/projects-Intel-Nestor-Ni1000-Recognition-Accelerator-User%27s-Guide.htm):
Ni1000

А после финала была абсолютно аутентичная дискотека под живую 8 бит музыку (https://polymus.ru/ru/events/exhibitions/8bit-futurism-live/), игралось всё на настоящем 8 бит оборудовании (типа GameBoy, например). И я даже немножко потанцевал. Хотя возраст уже не тот, танец тоже получился несколько восьмибитным, но на тамошнем мероприятии это было ОК.

Теперь вот ОКончательно ОК, ЖЖ, публикуй это.
2:02 pm
Эти разные, разные "нейро"
Дожили до времён, когда нужно уточнять, о каком именно "нейро" говорим -- человеческом или нежити. Вчера я побывал на ВДНХ сразу на двух тусовках, одна из них была посвящена "нейро" белковому (https://www.facebook.com/events/1416651928657501/), а другая -- софтовому (http://deephack.me). Не хватает пока тусовки для "нейро" кремниевого, но это поправимо и об этом я сейчас и напишу чуть подробней.

В хакспейсе на ВДНХ (станции молодых техников "Сталь" -- http://ailev.livejournal.com/1203397.html) началась программа еженедельных тусовок мейкеров, вчера была тусовка (GEEK Industrial MeetUP) по нейроинтерфейсам. Основная тема -- как снять и расшифровать ЭЭГ (то бишь "как читать мысли", что лишь косвенно означает "узнать как устроен мозг" -- например, обсуждение всяких "детекторов лжи" и "диагностов состояния" обычно мало затрагивает устройство мозга, а больше прикладные аспекты обработки сигналов).

Я предложил реализовать следующую цепочку действий:
-- носимую видеокамеру съемки себя любимого, который может делать видеосъемку с точным timestamps каждого кадра (частота обсуждается, но даже при 120Гц получается уже очень интересно). Главная тут фишка -- этот видеоконтент нужно выдавать на вход нейронной сетке-1, которая должна расставлять во времени метки фазы действия примерно так, как это было сделано на конкурсе по распознаванию действий руки человека на конкурсе Grasp-and-Lift EEG Detection, https://www.kaggle.com/c/grasp-and-lift-eeg-detection. Главное -- это не расставлять эти метки по видео руками, никакого ручного труда, пусть нейронная сетка-1 это делает (как научить нейронную сетку это делать, правда, отдельный вопрос -- трудоёмкость просто сдвигается с одной стадии работы на другую. Но с нейросетками есть хоть какие-то варианты с unsupervising learning, подсказок с уточнениями и т.д.. В случае же чисто ручной работы по разметке -- немасштабируемо, трудоёмко, невозможно).
-- мы также снимаем ЭЭГ, тоже с известным временем. И дальше нейронная сетка-2 должна разобраться, какие участки ЭЭГ отвечают за какое действие, ровно как в помянутом конкурсе Kaggle -- по разметке, которую нам дала нейронная сетка-1.

Зачем нам вдруг такое понадобилось (распознавать по ЭЭГ действия тела), если мы можем распознавать действия тела прямо по видео самого тела, мы не обсуждаем -- просто тупо следуем идее помянутого конкурса Kaggle, чуток (или не чуток) её развивая и извращая. Для меня всё не столько наука, сколько любительские мейкерские идеи, относящиеся к эдакому варианту современного искусства/спорта (типа конкурсов Чайковского или кинофестивалей): мало ли какой перформанс делают эти инженеры! Все эти ардуинные поделки они по большей части бессмысленны в плане как инженерии, так и науки, и должны проходить ровно по этой линии -- домашнего/клубного музицирования, конкурсов танцев, дворового футбола и прочих.

В любом случае, это стимул связать два сообщества, две нейротусовки -- живого нейро и нейроморфного софта.

А вот идея для нейро (кремниевого) хакатона, объединяющего сообщество мейкеров нейроморфного железа и сообщество хакеров нейроморфного софта (deep learning):
-- берём в спонсоры Intel, которая вот прямо сейчас покупает Altera за $16.7млрд. (у Altera на сегодня 39% рынка FPGA, хотя это и чуть меньше чем у Xilinx с 49% -- но зато давние контакты с Intel). Это не будет очень трудно, у того же хакспейса "Сталь" уже были мероприятия с Intel.
-- понимаем, что FPGA -- это то же Arduino, только уже не для юных техников, а для молодых техников. Станочки и оборудование почти то же, хотя рабочие станции тут нужны будут помощнее. Тем не менее, это явно для рынка самоделок. Altera describes OpenCL in this way: “The Altera SDK for OpenCL allows the user to abstract away the traditional hardware FPGA development flow to bring the inherently parallel and flexible architecture of the FPGA to the software developer with a much faster and higher level software development flow.” -- http://www.designnews.com/author.asp?section_id=1386&doc_id=278089
-- какого масштаба могут быть "самоделки"? Значительного: на современной FPGA-схеме может быть до 14млрд. транзисторов (http://en.wikipedia.org/wiki/Transistor_count). Так что делаем и отлаживаем кремниевый ускоритель для нейронной сетки (какой именно? можно поговорить с сообществом нейро-софта), для этого и нужен хакспейс, ибо домашнего ноутбука тут не хватит, это "железо", тут нужен рабочий стол и кое-какое оборудование.
-- чтобы найти интересующихся таким проектом, связываемся с профильным сообществом FPGA-мейкеров (в Новосибирске, например, http://vk.com/nskfpga. Про остальные можно узнать, например, тут: http://electronix.ru/forum/index.php?showforum=75. Азы предметной области на русском языке уже тоже доступны -- свежепереведённый на русский (http://panchul.livejournal.com/469643.html) учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера» плюс уже переведённая книжка "Computer Architecture: A Quantitative Approach" Паттерсона и Хеннеси. "Без Х&Х книжка Х-П - это описательное знание, а вот с комбинацией двух книжек студент может что-то реализовать на FPGA" (http://panchul.livejournal.com/469643.html?thread=19173003#t19173003).
-- изучить уже имеющийся опыт реализации deep learning архитектур на FPGA, Гугль вам в помощь. Это сегодня не rocket science! Это работа уровня университетской курсовой по neuromorphic engineering -- см. второе задание в курсе http://www.ece.ucsb.edu/~strukov/ece594BBSpring2015/home.htm, там и литература к курсу. Работ по нейроморфным архитектурам на FPGA много, вот очередная на этой неделе вышла: arxiv.org/abs/1507.05695 -- ширится, растёт движение!

Это всё вполне хакатонно и соревновательно. В http://cadlab.cs.ucla.edu/~cong/slides/fpga2015_chen.pdf есть какие-то ориентиры измерителей для организации "гонки нейрофлопс", хотя можно и упрощённые бенчмарки использовать, типа "As a proof of concept, we combined 128 identical neural cores together to build a handwritten digit recognition system using the MNIST database and achieved a recognition rate of 96.55%. The system is implemented on a state-of-the-art FPGA and can process 5.12 million digits per second" -- это из помянутой уже свеженькой http://arxiv.org/abs/1507.05695. Твори, выдумывай, пробуй! Быстрее, выше, сильнее!

Можно также пойти альтернативным путём и поисследовать процессоры для суперкомпьютеров: тот же Intel Knights Landing Xeon Phi (там более 64 ядер, но это не GPU архитектура, а нормальные процессорные ядра -- и можно поиграться с самыми разнообразными архитектурами там) -- http://www.zdnet.com/article/intels-next-big-thing-knights-landing/. Но это, боюсь, не совсем класса "мейкеров", суперкомпьютер в хакспейсе не сделаешь. Хотя это хорошая "цель на вырост" ;)

А дальше можно выйти на ещё один класс мейкеров: разгонный спорт, там тоже немаленькое мейкерское сообщество. FPGA overclocking отрабатывалось на биткойн-майнинге, так что и тут никакой вспашки целины, все тропинки уже протоптаны (хотя не все ещё заасфальтированы). А если задействовать охлаждение жидким азотом, то и вообще всё становится нервным и зрелищным -- можно в хакспейс на соревнования будет приглашать телевидение. Кто дочитал до этого места, бонус: манга про японских оверклокеров -- http://mangapark.me/manga/87-clockers-ninomiya-tomoko

В любом случае, хотя бы мысленная проработка таких сценариев "на стыке сообществ" по хакингу-мейкингу (deep learning, нейронет, FPGA, overclocking и т.д.) оказывается не самым плохим способом размять мозги (а потом, возможно, и размять руки -- взять, да сделать). Такой разминкой мозгов мы и занимались на нейро(белковой)тусовке в кулуарах. А в официальной части там были вполне серьёзные доклады про нейроинтерфейсы к вполне белковому мозгу.

Перед уходом в хакспейсе обнаружилась самоиграйка CASIO, и я даже поиграл на ней минут десять -- так что поработал в хакспейсе и руками тоже, всё честно (вот пруфвидео: https://www.facebook.com/steel.moscow/videos/508562049306646/).

А дальше пошёл на финал хакатона, из хакспейса туда было пять минут хода пешком по парку. Но об этом отдельный рассказ.
Friday, July 24th, 2015
3:23 pm
Мой доклад на Deep.hack
Сегодня сделал доклад "Нейронные сетки: круче интернета" на хакатоне http://deephack.me

Вот слайды (http://www.slideshare.net/ailev/ss-50880689):


Видео писалось, обещали выложить его попозже.

Тут в Долгопрудном чудесно, абсолютно не выспавшиеся команды, активно обучающийся на задачах финального этапа софт (завтра финал!), восхитительная содержательная программа -- организаторы говорят, что получилось сделать даже не столько хакатон, сколько полноценную школу по глубокому обучению.
Tuesday, July 21st, 2015
1:24 am
Очередной пузырь, и очередная новая экономика
Прошлый пузырь доткомов лопнул в 2000 году, и с ним лопнула интернет-экономика с её странными оценками стоимости компаний, не зависящими от ожидаемого денежного потока от клиентов, а зависящими просто от числа клиентов. Пузырь лопнул, и всё в части "интернет-экономики" благополучно вернулось на круги своя, капитализм остался капитализмом.

Сейчас довольно бодро надувается пузырь искусственного интеллекта/нейронных сеток (слегка разбавляемый ожиданиями пузыря роботов/интернета вещей и успехом компаний-посредников типа Uber и Airbnb) -- и опять пошли разговоры об отходе от принципов капитализма и переходе к какой-то невиданной ранее экономике:
-- Next:Economy. What's the future of work? An O'Reilly radar summit -- http://conferences.oreilly.com/next-economy -- Just about everyone's asking WTF? ("What's the future?"), but answers have been hard to come by.
-- The end of capitalism has begun http://www.theguardian.com/books/2015/jul/17/postcapitalism-end-of-capitalism-begun -- The old ways will take a long while to disappear, but it’s time to be utopian.
-- ...тысячи их.

UPDATE: и их ещё активно цитируют. Вот, например, сейчас цитируют вот эту: singularityhub.com/2015/07/20/we-need-a-new-version-of-capitalism-for-the-jobless-future/

И что-то мне подсказывает, что сумасшествие этого пузыря будет в разы и разы круче, чем доткомовского. Заденет не только экономистов, не только юристов. Крыша поедет у всех. Ибо Голливуд с интернет-пузырём по факту не работал (телефон-телеграф-телевизор на стероидах, мировой катастрофы из этого не высосешь) а вот про роботов и искусственный интеллект сейчас только ленивые режиссёры фильмы не снимают и ленивые журналисты алармистских текстов не пишут. Мужики-то уже знают. Кто не скачет, тот скайнет. А для начала роботы отберут работу.

Думаю, что запасаться в этой ситуации нужно не попкорном, а шапочкой из фольги.
Sunday, July 19th, 2015
2:01 pm
Архимейт по-русски: третий подход к снаряду
Пожалуй, я переведу на русский Архимейт третий раз. Я списался с автором свободного моделера Archi (http://archimatetool.com/), и он говорит, что версию 4.0 он делать до выхода ArchiMate 3.0 не будет. Так что я буду русифицировать текущую версию, 3.2.1.

Предыдущий вариант русификации я делал весной 2012 года для версии 2.2 (http://ailev.livejournal.com/988360.html), и он был работоспособен до версии 2.4.

Кидайте сюда комментами ваш опыт использования русификации, пожелания к изменениям в переводе, советы, и т.д.
12:30 am
Институты развития, как они бывают "там"
Вот пример, как работают институты развития "там". Предположим, кому-то очень хочется развить научные расчёты. Что для этого нужно сделать? Правильно: организовать много умного народу со всего глобуса, чтобы этот народ писал обширные библиотеки для научных расчётов с открытыми лицензиями. Для этого создаётся фонд NumFOCUS с девизом Open Code, Better Science -- http://numfocus.org/foundation/board.html.


В наблюдательный совет фонда входят девять человек: председателем там Jarrod Millman, нынешний студент магистратуры унивеситета Беркли (студент очень бодрый, активный и деятельный, побывавший даже директором университетского вычислительного центра, хотя доучился полностью он всего до бакалавра с красным дипломом в Корнельском университете, ещё в 1998 году, http://www.jarrodmillman.com/cv.pdf), но профессоров и докторов наук там явно больше половины -- http://numfocus.org/foundation/board.html

Эти люди под слоганами "самоподдерживающася экосистема научного софта", "воспроизводимые результаты научной работы" и т.д. собирают финансирование и прочую поддержку для десятка проектов (http://numfocus.org/projects/), в число которых входят главным образом питоновские библиотеки для научных расчётов, но также и разработка языка Julia (потому что для scientific computing we need something easier than C++, faster than Python, freer than Matlab, and newer than Fortran), и даже инструментарий родного для статистиков языка R.

Основная деятельность: фонд NumFOCUS проводит конференции по всему миру -- в основном PyData, Scipy, EuroScipy (http://numfocus.org/programs/conferences.html), но также и другие, типа прошедшей неделю назад была JuliaCon -- http://juliacon.org/, https://twitter.com/hashtag/juliacon -- only at #juliacon Computational Biology, Astrophysics, Quant Economics, Quantum Statistics all in one room. На для поездок на конференции фонд может платить командировочные. Но ещё он начал выдавать стипендии (fellowship) для тех, кто пишет правильный открытый софт, первая стипендия ушла Ольге Ботвинник. А ещё делает учебные мероприятия. И прямо поддерживает те или иные проекты по разработке софта -- официально представляет проекты как юрлицо, оплачивает какие-то расходы. Пока ещё этот фонд не проводит хакатоны, но я думаю, что это уже не за горами.

Жизнь там бурлит, ибо всё время что-то происходит: https://twitter.com/numfocus (маленький отчёт за 2014г. с перечислением форм работы тут: http://numfocus.org/news/2015/02/09/numfocus-2014-review/).

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

И таких организаций много. Например, сам Питон поддерживается Python Software Foundation -- https://www.python.org/psf/, там всё то же самое (конференции, стипендии, учебные семинары и т.д.), только цель в развитии языка Питон, а не поддержка численных методов. Проект IPython (формально он под крышей NumFOCUS) получает финансирование отовсюду, откуда только можно: http://ipython.org/sponsors.html

С фондов по нитке, но проектам огромная помощь. Вот, например, Jupiter (вышедший из того же JPython) десяток дней назад похвастался: получил $6млн. от трёх больших фондов на три года: https://blog.jupyter.org/2015/07/07/jupyter-funding-2015/

И никаких стартапов, инвестиционных меморандумов, национальных интересов с импортзамещением и прочего бла-бла-бла. Поддержка идёт сразу по всему миру, помощь получается со всего мира, но даже плашку этих фондов забывают повесить на вебсайт проекта (показательна в этом, например, такая дискуссия по поводу "чей проект Julia": https://groups.google.com/forum/#!topic/julia-dev/YTLdGaE1U1o).

А на выходе? На выходе всей этой суеты со стипендиями и конференциями то самое развитие инфраструктуры современной науки, образования и бизнеса, в масштабах мира. Эта система фондов и их организационная помощь позволяет сорганизовать огромное число добровольных пожертвований уже не деньгами, а временем -- тысячи и тысячи добровольцев жертвуют в проекты свой код. Это самые неблагодарные проекты, инфраструктурные. На них не сделаешь стартапа, ибо риски запредельны а отдача неминуемо низка. На них не дадут деньги венчурные фонды и прочие "институты предпринимательства" (в том числе и наши российские "институты развития" -- задуманы-то они как помощь в создании инфраструктуры, а заняты предпринимательством на деньги государства, мутят главным образом стартапы).

Дело не ограничивается софтом. Те же механизмы пойдут и для чипов, и для хардвера. Более того, те же механизмы работают и в случае разработки самых разных стандартов.

Но эти инфраструктурные проекты, проекты организации сообщества, проекты стандартизации и создания технологических платформ нужны очень и очень многим людям, именно они всё чаще и чаще оказываются в самом фундаменте технологического стека для научных исследований, образования и тех же стартапов. И негосударственные фонды, если их не закрывать как иностранных агентов, вполне могли бы это всё поддерживать и обеспечивать финансовую смазку для вязкой инфраструктуры. И это было бы в разы и разы полезней, чем прямое инвестирование госбюджетных денег в науку, образование и стартапы.
Saturday, July 18th, 2015
12:21 pm
Открытие станции молодых техников "Сталь"
Вчера я побывал на открытии хакспейса "Сталь" на ВДНХ (http://steelhack.ru). Сразу скажу, что место там замечательное: от метро всего 15 минут пешком (я засекал), если идти не спеша и наслаждаться парком.

Из обычного -- это коворкинг с небольшими 3D-принтерами и обрабатывающими даже не центрами, а станочками. По идее, больших не нужно: заявленные целевые системы тут гаджеты размером с ладошку, хотя почему-то и всякие электросамокаты и электровелосипеды тоже -- интересно, какой станочный парк будет нужен для закрытия всего этого разнообразия размеров и материалов? Коворкинг с доступом к "акселератору" (то есть сержантам венчурных войск, которые муштруют новобранцев в стартапах на предмет получения внятной бизнес-модели и её презентации, и платят стипендию ангельскими, то есть небольшими, деньгами). Промышленный акселератор, организовавший коворкинг-хакспейс -- это "Сталь" (http://steelup.ru) с девизом "кузница технологий". У хакспейса девиз был подрихтован -- там уже "кузница российских технологий", сравните: https://www.facebook.com/steel.moscow.

Из необычного -- заявленные желания и возможность проводить "мероприятия" с числом участников до 800 человек, открытие как раз таким мероприятием и было. Катание на электро-скейтах, самокатах, велосипедах снаружи (это значит по ВДНХ), сцена и куча переговорных наряду с 3D-принтерной зоной на одном этаже, дискотека с винилом, баром, выставкой-продажей гаджетов, кальянами, зелёным чаем и барбекью на другом этаже, смотровая палуба (на которой легко разместить до 200 человек) на третьем.

Вот это уже интересно, потому как Digital October пытался делать что-то подобное для сообщества айтишников, Робоцентр Сколково занимается тусованием робототехников, "Стрелка" тусует градостроителей, а вот тут объявлено о тусовании гаджетников -- самоделкиных и кулибиных, которым для работы мало компьютера, нужны ещё станочки и материалы. Кстати, это не первая инициатива на предмет стусовывания мастеровых людей в сообщество -- помощи им в формировании команд, организации сбыта удачных изделий, обучении (ибо онлайн курсами тут не отделаешься, нужны ещё и станочки-материалы).

Вот тут нужно задать много вопросов: какие должны быть станочки и материалы, чтобы полностью сваять там гаджет? Какие типы гаджетов не выскочат резко за пределы предполагаемого станочного парка? Электросамокатный транспорт -- что можно будет для них сделать? Отвёрточную сборку, т.е. коворкинг будет предлагать зону для распаковки сделанных где-то деталей и отвёртки? Выход в физический мир для коворкинга сразу предлагает в разы больше вопросов, чем в случае айтишного или "криэйторского" коворкинга.

Возвращаясь к айти, которое тут же становится инженерным. Компьютер при этих принтерах был, стоял он сильно сбоку и (как это принято у бывших советских инженеров) на нём было аж два экрана FullHD. Это означает, что в САПР и с другими моделерами работать на этом компьютере будет неудобно. Для этого экран должен быть минимально дешёвый 2560*1600, но сегодня лучше бы уже 4К. И там сразу проблема с лицензиями на разные САПР и моделеры, их настройкой, но ещё и проблема с PLM (хотя я понимаю, что для крошечных инженерных проектов в качестве PLM будут использовать GitHub). Конечно, можно пользоваться облачными САПР и PLM (например, Fusion 360 и PLM 360 от Autodesk), но это почему-то не обсуждалось. Разворачивать САПР на собственных ноутбуках приходящих самоделкиных тоже можно (если взять для этого какой-то игровой ноутбук), но тогда поставьте хотя бы те самые 4К 40" мониторы, чтобы глаза не ломать и иметь возможность посмотреть картинку на экране хотя бы паре человек! Да, можно проектировать дома, а изготавливать всё в коворкинге. Но иметь редактор и принтер на разных концах города мало приятно, жизненный цикл сегодняшней инженерии не водопадный, а параллельный.

На открытии собралось довольно много мастеровых людей, многие из которых пытались под это дело что-нибудь распечатать (один из них принёс, например, проводящий материал из пластмассы с графеновым наполнителем, чтобы распечатать электроды для съема электроэнцефалограммы). Но было замечено также огромное число людей из "институтов развития" (этот buzzword потихоньку набирает обороты -- https://www.google.com/trends/explore#q=%D0%B8%D0%BD%D1%81%D1%82%D0%B8%D1%82%D1%83%D1%82%20%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F).

Интересно, что лет пять назад, на заре этих институтов развития вся их риторика, цели создания и попытки деятельности были направлены на то, чтобы ворваться и стать стремительным домкратом, поднимающим Россию с колен. Градус патриотической и госплановской риторики в этих институтах развития был круче, чем в телевизоре. Но после намкрыша всё довольно сильно поменялось (о причинах могу только гадать): телевизор вообще взбесился и рванул с колен так, что верхушка России ударилась головой о потолок и окончательно повредилась, а "институты развития" ровно наоборот -- убрали масштабы страны из своей риторики и начали говорить о конкретных командах, технологиях, учебных программах и прочих понятных и обозримых инициативах, часто вполне международных. Казусы с попаданием России в слоганы типа того, что произошло в "Стали" -- это сейчас именно что отдельные казусы. Возвращается старая советская система с домами культуры, домами пионеров, домами учителя, домами творчества молодёжи -- которые не ставили задачи решения государственных проблем в государственных масштабах, а в силу своих скромных возможностей как-то и что-то (только не спрашивайте как и что, всё зависело от конкретных тамошних людей) возделывали вокруг себя. Вот эти "институты развития" сегодня стали домами стартапников, которые по сути помесь дома культуры в их менеджерской части и станции юных техников в инженерной.

Так что я сходил на станцию молодых техников "Сталь" (домом пионеров и станцией юных техников его всё-таки не назовёшь -- люди там чуточку постарше), встретил кучу знакомых из других домов культуры, даже чуть-чуть потанцевал . Приду ли я сюда ещё раз? Да, вполне возможно. У меня самого дома пару наборов ардуино, и если я с отроком сделаю из них что-то, достойное помещения в корпус, то мне до этого хакспейса по прямой ветке метро -- дома у меня 3D принтера пока нет, а там есть. Опять же, вокруг парк и мороженое, отрок будет счастлив.

Ну, или приду на ещё такие встречи самоделкиных, какая была на открытии. Или на лекции, которые там будут проводить, или на мастер-классы. Я ведь в кружках "Умелые руки" и в школе, и в доме пионеров с начальной школы по самый выпускной пасся, какой-то опыт изготовления гаджетов есть ещё с 60-х годов прошлого века, так что count me in.
Friday, July 17th, 2015
3:59 pm
Нейронные сетки будут покруче интернета
Сегодня в 19 часов по НТВ должен будет пройти новостной сюжет по нейронным сетям, посвящённый послезавтрашнему хакатону -- http://deephack.me/.

Я сегодня рассказывал для этого сюжета, что примерно так же комментировал интернет лет двадцать назад (в 1995, а вебсайты же я делал с 1994 года -- первый вебсайт до сих пор живёт, ему уж 21 год будет через пару недель: http://libertarium.ru/). Как и сегодня про искуственный интеллект в целом и глубокое обучение в частности, я тогда пел песню, что "это перевернёт жизнь миллиардов людей", а телевизионщики, да и не только они, хихикали и поминали "Москва слезам не верит" с его "не будет ни газет, ни книг, ни кино, ни театров, а будет одно сплошное телевидение".

Сегодня я говорил, что нейронные сетки повлияют на мир не меньше, чем интернет, и что даже инвестиционный пузырь уже начал надуваться. Вот, полюбуйтесь на немного устаревший уже график (https://www.cbinsights.com/blog/artificial-intelligence-venture-capital-2014/):
bloombergai1
Я заметил, что пузырь уже стартовал в 2012 году (пункт третий в http://ailev.livejournal.com/1051479.html). Нужно понимать, что основные вкладываемые деньги выйдут на рынок в виде продуктов и сервисов только через пару-тройку лет, а иногда и чуть позже. Так что сегодня мы видим только самые-самые цветочки, почти незаметные: телефоны вдруг начали почти без ошибок распознавать речь, фейсбук узнаёт лица на фотографиях и предлагает только подтвердить тег, гуглевская пикаса сортирует и ищет фотографии по ключевым словам на них изображённого. Цветочки будут чуть позже: на идущем сейчас семинаре по глубокому обучению сформулирована нетривиальная мысль -- "мы научили нейронные сетки тому, что хорошо умеет делать человек: слышать и видеть. ОК, пошли дальше: давайте научим их тому, что человек пока не умеет делать хорошо. Например, давайте научим их медицине -- пусть распознают болезни" (https://sites.google.com/site/deepernn/home/blog/briefsummaryofthepaneldiscussionatdlworkshopicml2015).

Глубокие архитектуры нельзя недооценивать. Так, в работе по обучению нейронной сетки аркадным играм на Atari 2600 (http://www.humphreysheil.com/blog/gorila-google-reinforcement-learning-architecture, оригинальная статья http://arxiv.org/abs/1507.04296) задавался простой вопрос -- если добавить вычислительной мощности и дать побольше времени, будет ли сетка умнее, или там есть порог её глупости, выше которого не подняться? Ответ (вполне ожидаемый): да, добавляешь мощности -- получаешь более умную сетку. Так и хочется написать "просто добавь серого вещества", но эти нейронные сетки относятся к мозгам примерно так же, как самолёты к птичкам. А "компьютерное серое вещество" продолжает умощняться, так что более умные сетки на подходе (вот, например, недельной давности новость: тестовые чипы 7нм уже работают -- http://asmarterplanet.com/blog/2015/07/a-new-wave-innovation-chips.html).

Опять же: пожалуйста, никаких спекуляций про general artificial intelligence (GAI), то есть "искусственный интеллект, сравнимый с человеческим интеллектом". Я этого разговора не поддерживаю. На панели того же семинара по нейронным сетям было предложено для начала воспроизвести интеллект обезьянки-капуцина. Так я и этого не поддерживаю. Это всё равно как самолёту предложить сначала полетать как белке-летяге, затем как ласточке, затем как орлу. Ну, а потом долго спорить: самолёт искусственно летит, или просто летит? Вот когда компьютер демонстрирует интеллект, он искуственный интеллект демонстрирует, или просто интеллект? Ну, а дальше чернуха про захват рабочих мест роботами и скайнет, а также рассуждения про чуть ли не божественной и внефизической природы творческое мышление человека, до которого компьютерам не подняться, "потому что не подняться никогда". Цель сделать мыслительный ящик есть: ящик решает какие-то классы интеллектуальных задач, чего ещё надо? Цели сделать что-то человекоподобное, повторить в ящике человека в его полноте -- нет такой цели (кроме совсем отдельной кучки учёных и инженеров, которые именно AGI занимаются), так что все эти вопросы обсуждайте не здесь.

А здесь можно обсуждать, когда точность компьютерного диагноза превысит точность диагноза, поставленного опытным врачом. Обсуждать примерно так же, как обсуждается точность замера лазерным дальномером по сравнению с точностью глазомера опытного строителя. Только лазерный дальномер не подскажет, как строить. А нейронная сетка сможет подсказать, как лечить. И как строить. И даже как сделать себя умнее (почему бы и нет?). Только и всего, ничего человеческого. Но этого хватит, чтобы жизнь поменялась круче, чем с приходом интернета.
Wednesday, July 15th, 2015
12:28 am
Опора на события: глаз лягушки в моделировании предпринятий
Из чего состоит предпринятие? Если грубо и с минимумом деталей, то из команды, работы, технологии, которые реализуют возможность обеспечить стейкхолдерам определённое воплощение целевой системы(подробности такого рассмотрения в http://ailev.livejournal.com/1159110.html, а ещё больше подробностей в учебнике http://techinvestlab.ru/systems_engineering_thinking):
alphasengproj_rus

При моделировании предпринятия мы (в зависимости от превалирующего интереса к технологии, работе или команде) можем выбрать три различных подхода к описанию его деятельности, с акцентами на:
-- метод/технологии деятельности,
-- на выполняемые работы
-- договорённости о разделении труда в команде

Эти же три варианта в Cordys (2008), "Response from Cordys to the OMG Dynamic Business Activity Modeling RFI" называют
-- artifact-based (поскольку альфы/рабочие продукты важны для описания практик),
-- activity-based (процесс или проект как последовательность работ),
-- communication-based (коммуникация о поручениях работы между членами команды).

Wang, J., et al. (2005), "A framework for Document-Driven Workflow System" эти же три варианта называют
-- information-based (поскольку не на заводах рабочие продукты в основном это информационные объекты),
-- process-based (развёртка во времени, последовательность работ),
-- organization-based (полномочия членов команды, разделение труда -- это и есть суть организации, пример такого подхода DEMO, http://ailev.livejournal.com/644440.html).

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

Мы рекомендуем за основу брать описание практик, следование которым в работе изменяет продукты. Удобней начинать описание практик с альф, а не с рабочих продуктов -- нас интересует в практике прежде всего описание дисциплины, предметной области, абстрагированное от рабочих продуктов. Хотя и технология тоже интересна, в этой части мы описываем какие рабочие продукты выражают альфу. Опора на дисциплину, а не сразу на технологию экономит мышление: по подсчётам команды Essence одна альфа в среднем выражается 6-10 рабочими продуктами!

Но деятельность не состоит только из рабочих продуктов! Деятельность-то разворачивается во времени, а это процессный аспект! Куда мы денем процессы при описании деятельности? Мы будем учитывать изменения продуктов во времени, но не как в процессном подходе -- не указанием последовательности работ. Это даст нам возможность выполнять работы не друг за дружкой в заранее запланированном порядке, а планируя эти работы в зависимости от ситуации (в том числе используя для ускорения планирования и уменьшения ошибок планирования и учёта выполнения планов информационные системы).

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

Мы будем смотреть на предпринятие как лягушка: она видит хорошо только движущиеся предметы. Альфы/продукты увидеть трудно, но легко заметить их важные изменения -- достижения ими каких-то состояний. Если начинать с хорошо заметных важных событий ("поверхность чиста", "деньги пришли", "команда сработалась"), то много легче затем выйти на полноценное моделирование всех других объектов. И это продукт-ориентированный подход, как ни странно.

Событие -- это вполне себе "продукт", это срез мира (или одного продукта, или группы продуктов) в момент изменения состояния. То есть событие это вещь/продукт/альфа/artifact, но в какой-то совершенно определённый момент времени -- момент, когда одно состояние сменилось другим (последний момент предыдущего состояния или первый момент следующего -- смотря как сформулировать). Состояние, конечно, должно быть таким, чтобы мы могли вполне определённо узнать о его смене. DEMO говорит об этом как о координационных фактах (смену состояния должен выразить стейкхолдер -- события "поручил", "обещал сделать", "сделал", "принял", "разрешил" и т.д.) и производственных фактах (изменение состояний продуктов).

Смена состояния обеспечивается работами, но состояния формулируются как желаемый результат работ (состояние мира, определяемое чеклистом, а хоть из одного пункта), а не ведущей к достижению состояния работой: помним разницу между "учил" и "выучил" -- "учил" это про выполненную работу, а "выучил" про достигнутое состояние.

В Essence альфы так и определяются: у них есть состояния, начинающиеся с событий их достижения ("Воплощение системы демонстрируемо: система собрана из её частей и готова к проверке", "Определение системы непротиворечиво: определение системы создано и непротиворечиво") и контрольные вопросы/checkpoints, которые определяют более мелкие детали состояний альф, начинающихся с событий их достижения ("Критические интерфейсы были продемонстрированы", "Описания проверяются").

В 4D онтологии мы могли бы говорить о событиях начала существования полных временнЫх частей экземпляров альф как функциональных индивидов (подробней про 4D см. в разделе "2. Формализмы системной инженерии", подраздел "3D и 4D" учебника http://techinvestlab.ru/systems_engineering_thinking, хотя OMG Essence не слишком чётко выдерживает классическое онтологическое рассмотрение).

В проектном управлении события -- это прежде всего контрольные точки, (вехи, milestones), характеризуемые желаемым состоянием продуктов на момент прохождения вехи. Вехи интересны тем, что в них интересуются не выполненными работами ("учил?!"), а достигнутым результатом ("выучил?!"). Гейты (gates, ворота) -- это те же контрольные точки/вехи, но недостижение результатов которых может остановить весь проект. Современные принципы lean уменьшают количество гейтов, но увеличивают количество вех -- по факту сколько запланировано работ, столько оказывается и вех: выполнение всех работ, причём "вовремя", контролируется.

В управлении делами (case management/issue tracking) главные события -- это открытие и закрытие дела (case, issue). Конечно, внутри может быть много других контрольных точек/событий (формальных типа "менеджер кейса назначен" или содержательных типа "баг воспроизводится").

В процессном управлении события тоже бывают, но чаще всего это просто "закончилась одна работа, начинается другая".

Так что опора на события позволяет нам через изменение состояний изменяемых нашими работами (или внешними силами) альф (продуктов) описывать деятельность на понятном для приверженцев других подходов языке -- языке контрольных точек проекта, событий процесса, состояний альф и чеклистов Essence, координационных и производственных фактах DEMO и т.д.

Опора в моделировании предпринятия на события может черпать полными ладошками из опыта моделирования при разработке софта. По большому счёту, для разработки софта требуется описывать модель использующей системы (а это часто означает моделирование деятельности/практики -- domain, предметной области), а не только модель целевой системы -- собственно программного средства. Ну, и ещё можно заметить, что программирование и моделирование вообще очень близкие деятельности, иногда до неразличимости (особенно, если людей и компьютеры обобщить под общим философским именем "агенты", но не будем тут подначивать гуманитариев).

Вот что даёт нам мировой опыт опоры на события, вот что нужно аккуратно переварить (в том числе перевести на русский, обобщить и как-то компактифицировать), а затем переложить в Соглашении о моделировании и использовать в работе:
позволяет нам немедленно воспользоваться всеми преимуществами популярных практик моделирования, которые пришли к нам из разработки программного обеспечения:
-- практика чеклистов (чеклисты это и есть списки ожидаемых событий!), в том числе чеклисты Essence.
-- практика контрольных точек в параллельной инженерии/concurrent engineering (например, у Airbus порядка 1000 контрольных точек верхнего уровня, и всего три гейта -- http://www.amazon.com/Commercial-Aircraft-Projects-Hans-Henrich-Altfeld/dp/0754677532). Хитрость в том, что все контрольные точки привязаны к структуре самолёта, к состоянию продукта! У российских атомщиков очень похожая методика планирования работ в строительстве (привязка контрольных точек к информационной модели) называется Multi-D. И она в свою очередь была подсмотрена на примере методики Toshiba 6D. В системной инженерии сейчас это общее место: формальная привязка контрольных точек activity-проекта к состоянию продукта.
-- DDD (domain-driven design, https://en.wikipedia.org/wiki/Domain-driven_design) в сочетании (http://www.infoq.com/news/2015/02/bdd-ddd) с BDD (behavior-driven development, http://dannorth.net/introducing-bdd/ и есть русский перевод http://habrahabr.ru/post/216923/).
-- выходящие в мейнстрим корпоративной работы с "процессами" (несмотря на весь шум с BPMN 2) -- https://en.wikipedia.org/wiki/Complex_event_processing и https://en.wikipedia.org/wiki/Event_correlation, тут можно вспомнить и о Business Rules (организационных нормах: http://ailev.livejournal.com/693597.html).
-- описанием сложных поведений через "машину состояний" (вот тут даже "программирование с явным выделением состояний" предлагается на роль "серебряной пули" -- http://is.ifmo.ru/works/mirk/, а вообще -- автоматное программирование, событийно-ориентированное программирование -- там много общего и для программирования и для моделирования деятельности).

Для наших целей интересно указать на вышедшую из DDD/BDD практику Event Storming (событийный штурм), предназначенную для скорейшего раскрытия структуры предметной области. Она заключается в том, что экспертов этой предметной области просят зафиксировать на стикерах основные события предметной области и операции (там их называют "приказы", Command -- выражение намерения стейкхолдеров), приводящие к этим событиям. Плюс выделяются какие-то части системы (Aggregates, "агрегаты"), которые получают команды и производят события -- http://ziobrando.blogspot.ru/2013/11/introducing-event-storming.html#.VaVs25fp_Nw, http://ziobrando.blogspot.ru/2014/06/eventstorming-recipes.html#.VaVtjJfp_Nw, http://www.ebookxp.org/verraes.net/2015/05/towards-modelling-processes/?b=4

Помним, что несмотря на всю кажущуюся процессно-ориентированность Event Storming (как части DDD), там опора на продукты/альфы предметной области -- ибо события прежде всего выражают изменение состояния мира, изменение состояния вещей, четырёхмерных индивидов.

Как проявляется событийность в ArchiMate? Понятно, что там впрямую есть элемент Event (событие), но в ArchiMate это не столько состояние объекта, сколько "почти процесс" (activity, не object и не subject)! Как я понимаю, это сделано для облегчения показа запуска процесса каким-то событием (ибо запустить/trigger процесс или практику объектом там нельзя, у объекта в ArchiMate нет состояния. А процессы влёгкую запускают друг друга, их окончание "неявное событие", невзирая на неопределённость и неназванность состояния мира, к которому процессы привели).

Можно, конечно, ещё спекулировать что в ArchiMate motivation extension выставление Оценки это тоже событие, а Цель -- это Приказ, выражающий намерение по реализации фрагмента архитектуры. Если Приказ не провалился (в DDD/BDD один из важных моментов -- это анализ рисков, почему Приказ может провалиться, какие события к этому могут привести), то должно пройти изменение оценки в соответствии с Целью. Оценка "мы не растём" (похоже на событие по формулировке, хотя и не привязано к изменению ситуации), цель/контрольная точка (SMART) "Вырасти вдвое к Новому Году" (желаемое событие -- "выросли вдвое" на момент "Новый Год". Теперь можно мерять не "процесс вырастания", а сам рост -- и для начала придётся точно определить, что именно должно вырасти, чтобы было событие. Думать не процессами, а вещами/продуктами/альфами/артефактами/объектами и отслеживать контрольные точки -- смены их состояний).

Итого: начинайте моделировать деятельность не с операций. Начинайте с событий -- именно к ним приводят (или от них уводят) самые разные операции самых разных практик, а происходят они с альфами/продуктами, это замаскированные альфы/продукты. Хотите вы, или не хотите, а для формулирования события вам придётся найти и назвать альфу/продукт, который меняет состояние. Планируются же события как чеклисты (к продуктам) и контрольные точки (состояния продуктов в проектах).
Monday, July 13th, 2015
9:51 pm
Стратегические деревья
Вчера в посте "Стратегия развития предпринятия и её моделирование" (http://ailev.livejournal.com/1201751.html) я заметил, что кроме непосредственного моделирования стратегии средствами расширения целеполагания ArchiMate 2.1, можно использовать и другие средства -- например, карту действий и результатов (наше TechInvestLab русскоязычное переложение дерева стратегии и тактики Голдратта в 2008 году было такое: http://ailev.livejournal.com/567097.html, оригинальное гнездо методики сейчас http://www.tocico.org/?page=strat_tact_portal).

Как выглядят такие модели на практике? Мы в 2008 году использовали для их разработки честно купленную программу Flying Logic, а сегодня бы рекомендовали для этого бесплатный yEd -- http://www.yworks.com/en/products_yed_about.html (в их основе одна и та же библиотека авторазводки).

Вот пример дерева "стратегии реализации стратегии" -- стратегии организационной работы по реализации транспортной стратегии областного уровня. Это не слишком большая карта, всего три уровня (в .pdf её можно поглядеть тут -- http://techinvestlab.ru/394450), она сделана по шаблону


Проблема оказалась в том, что на печати подобные карты представляют собой рулончики в метр шириной и четыре метра длиной -- поглядите пример в .pdf и вы сразу всё поймёте. Ну, и на проекторе это тоже необозримо.

Позже мы с клиентами начали оформлять такие "деревья", как и Голдратт -- по узлу на слайд в PowerPoint. Да, целостное ощущение от дерева и места в нём каждого элемента стратегии терялось, но зато проще стало устраивать обсуждения (сами понимаете, презентация четырёхметрового стратегического рулона была очень эффектной и эффективной, но чисто логистически её было трудно проводить -- приходилось или сдвигать столы, или выбирать длинную свободную стенку, не боящуюся скотча или кнопок. Но зато такие торжественные стратегии-рулоны потом висели в начальственных кабинетах по многу лет, нам укором. Ибо стратегия ничто, а стратегирование всё: отсутствие непрерывных коррекций в стратегии для неё смертельно).

Поменяли мы и содержание узла стратегического дерева, приблизив его к strategy case (по аналогии с assurance case -- инженерными обоснованиями). В 2015 наш узел стратегического дерева выглядит так:

strategy_node

Основное тут -- это разделение 1. цели (целевого состояния мира, результата действия, события как 3D среза состояния мира в момент его наступления) и 3. приводящей к достижению цели практики (средство достижения цели, деятельность, способ работы). При этом нужно 2. обосновать, почему вам вдруг захотелось такой цели, 4. обосновать, почему вдруг вы считаете, что ваша практика приведёт к достижению цели. Кроме этого нужно 5. сформулировать какие-то практики/деятельности, которые вы перестанете (или не будете, хотя и собирались) делать после принятия стратегии, ибо стратегия это всегда жертва, это фокусирование на чём-то одном в ущерб чему-то другую. Наконец, 6. вы должны привести несколько событий/целей/результатов/состояний мира более низкого уровня и практики их достижения и обоснования. Это нужно, чтобы ответить на возражения, что ваша затея с выбором практики рискованная: что вам удастся выполнить практику не "как всегда", а "как лучше", вы продумали детали и отвечаете на все возможные возражения заранее. Эта детализация часто идёт до четырёх-пяти уровней, а самый верхний уровень -- это миссия.

На наших семинарах мы это растолковываем, конечно, более подробно.

Как это всё выражать в ArchiMate? Трудно, поскольку авторазводка тут главное, а в повсеместно используемом моделере Archi авторазводки нет (посмотрите на пример дерева и прикиньте, как бы вы это выравнивали руками).

Более того, и это не единственное представление для стратегии. Бизнес-модель это ведь тоже стратегия, а для неё сегодня принято представление в виде холста (canvas), я при этом предпочитаю не оригинальный холст (кратенько о нём в http://www.slideshare.net/wanderer_from/6-9293757), а модифицированный Lean вариант -- http://leanstack.com/why-lean-canvas/

Моделер Archi для таких "неукладывающихся" в стандарт ArhciMate менее формальных моделей использует холст, который можно настраивать на разные форматы. Там это рекламируется как средство для "архитектурных эскизов", перед формальным моделированием. Но мы же понимаем, что в 99% случаев этими эскизами дело и ограничится, это ведь и есть современный тренд Lean. Но если речь идёт не о маленьком стартапе, а о большом холдинге и координации действий сотен людей, там можно задумываться и о более серьёзном, формальном моделировании.

Выражение всех этих альтернативных стратегических моделей в ArchiMate -- это предмет отдельного рассказа. Но перед этим мне ещё нужно вам рассказать о моделировании с опорой на события, они же контрольные точки (checkpoints или milestones -- это вы выбирайте сами, подойдёт и одно и другое).
1:24 pm
11K экран в смартфоне Samsung -- шанс для слабых искусственных интеллектов
Для чего производители смартфонов увеличивают число пикселей на своих крошечных экранах? Вон, Samsung объявил о создании смартфона с 11К пикселей (2250 пикселей на дюйм) уже через три года -- http://english.etnews.com/20150710200002. Эти ж пиксели неразличимы глазом уже чуть ли не при 326 пикселей на дюйм, "ретине" (https://en.wikipedia.org/wiki/Retina_Display)? Неужели из-за 3D эффекта "без очков", который хотят сделать на таком экране (Samsung утверждает, что при таком суперразрешении экрана возникает правильная для 3D ощущения оптическая иллюзия)?

Нет, просто уже и сейчас смартфоны засовывают в очки из картона (с подачи Гугля) или пластмассы (начинают выпускаться массово) и делают из таких "пустых очков" шлемы виртуальной реальности -- типа http://www.wareable.com/samsung/samsung-gear-vr-review. Картинка в таком шлеме существенно увеличивается, чтобы закрыть по возможности всё поле зрения, так что даже при 11K до качественного изображения с неразличимыми пикселями будет далеко.

11К это явно побольше, чем "следующее мейнстримное" 8К (http://www.pcworld.com/article/2881732/new-standard-paves-way-for-8k-display-in-allinones-laptops.html, http://drbobtechblog.com/8k-133megapixel-60-fps-image-sensor/).

Для обработки изображений 11К нужно существенно развить и аппаратуру -- аппаратные графические ускорители, связные интерфейсы (в том числе интерфейс аппаратного графического ускорителя с оперативной памятью).

Но мне ещё греет душу то, что аппаратные ускорители для 11К графики и для нейронных сеток могут оказаться очень похожими. Это означает, что любители игр и кино проинвестируют вычислительные мощности для задач deep learning. А если 11К графика будет в смартфонах, то это автоматически будет означать, что и глубокие нейронные сетки в смартфонах будут аппаратно обеспечены. И для этого почти ничего не нужно делать, разве что желать успеха издателям игр для шлемов виртуальной реальности -- часть этого успеха в виде дешёвых аппаратных ускорителей перепадёт и слабым искусственным интеллектам.
12:52 am
Глубокое обучение мельчает? Не дождётесь! Ждём гиперреволюцию, гиперэволюцию!
Эксперт Мелкомягких Исследований Li Deng заявил недавно, что в deep learning все низковисящие фрукты сорваны, и период бурного развития и надувания пузыря переходит в планомерное совершенствование -- каждого нового результата теперь придётся ждать долго (http://www.theplatform.net/2015/07/07/is-the-window-closing-on-big-leaps-forward-in-deep-learning/).

Моё мнение совсем другое: всё только-только начинается и полученные в последнее время результаты не выход на верхнее плато S-образной кривой развития, а ровно наоборот -- окончание нижнего плато.

Сейчас происходит интенсивная ломка мозгов, массовая и по всему миру. Так, рассуждения про "машины тьюринга недостаточно для моделирования интеллекта" заменяются на "нейронных сетей достаточно, чтобы моделировать машину тьюринга". Вообще, нейронные сети формально моделируют любую функцию, в том числе функцию множества переменных. Это, кстати, очень сильное теоретическое утверждение (http://neuralnetworksanddeeplearning.com/chap4.html) -- ибо "функция" это не только численная функция, и компиляция компьютерной программы, и перевод с языка на язык, и классификация, и поиск. С одной стороны, это не строгое воспроизведение "любой функции", а именно что "бесконечное приближение", моделирование самого важного -- но это изменение парадигмы. И вот самые отчаянные уже говорят о триумфе эмпирицизма в лице глубоких архитектур: http://www.kdnuggets.com/2015/07/deep-learning-triumph-empiricism-over-theoretical-mathematical-guarantees.html. И мы помним, что deep learning это только часть более общего направления representation learning (http://ailev.livejournal.com/1045081.html). А ещё помним, что в основе нейронных сеток лежат какие-то присущие природе закономерности, это не чистая "придумка ума", они физичны в своих свойствах -- там, похоже, работает физика процессов эволюции (http://ailev.livejournal.com/1197148.html). Вообще, идеи из физики в нейронных сетях -- это уже общее место. Вот, например, Deep Unsupervised Learning using Nonequilibrium Thermodynamics -- http://jmlr.org/proceedings/papers/v37/sohl-dickstein15.html

Пузырь в такой ситуации взрывного роста успехов исследователей и инженеров, конечно, неминуем. Куда ж тут без пузыря и обманутых ожиданий желающих поучаствовать в неминуемых прибылях! В ходе надувания пузыря огромное количество народу будет узнавать про новую предметную область и тыкаться в ней во всё, что ни попадя -- и ведь попадут (во всех смыслах этого слова)! Так, акцент уже сегодня с классических работ по анализу изображений смещается на их синтез. Плюс выпячивается аспект глубокой нейронной сетки как "универсального вычислителя". Такая сетка начинает использоваться для разбирательства с последовательностями, текстами и другими разворачивающимися во времени процессами (а не картинками и прочими статическими ситуациями) -- вот свеженький обзор подходов http://arxiv.org/abs/1506.00019.

Их уже начинают использовать в вопросно-ответных системах, это наверняка будет следующим хитом (потенциально это, конечно, killer application) -- уже их добавляют в IBM Watson (http://www.technologyreview.com/news/539226/ibm-pushes-deep-learning-with-a-watson-upgrade/), а MetaMind демонстрирует "научение рассуждениям, научение распознавать причинно-следственные связи (http://www.technologyreview.com/news/538821/computers-are-getting-a-dose-of-common-sense/). Вообще, сходите на вебсайт MetaMind (https://www.metamind.io/), развлекитесь. Там много интересного. Вот, например, как они приспособили способность нейронной сетки распознавать изображения -- накладывают в очках augmented reality на изображение предмета его название на иностранном языке, получается словарь-переводчик хоть для разговора, хоть для изучения языков (https://www.metamind.io/alis):


Аппаратура на подходе, но и на существующей аппаратуре прогресс довольно ощутим. Например, NVIDIA выпустила новую версию библиотек, которая ускоряет работу нейронных сетей на её ускорителях (pun intended) вдвое -- и что, вдвое это "уже нет существенного прогресса"? Налетай, http://www.nvidia.ru/object/nvidia-updates-deep-learning-software-jul-07-2015-ru.html. Хотя да, когда нейронные сетки улучшали результаты существующих алгоритмов распознавания речи при увеличении скорости в сто раз и выигрыше по памяти в те же сто раз, то "вдвое" уже не кажется прогрессом. Но так и закон Мура можно обозвать законом периода застоя в развитии вычислительной техники, там ведь тоже всё основано на "вдвое"!

Потенциал разгона вычислений в representation learning ещё не исчерпан. Например, возникают новые способы порождения кода для ускорителей -- вот, evolving GPU Machine Code (использует идеи квантовых вычислений, чтобы синтезировать код для GPU -- http://www.jmlr.org/papers/v16/dasilva15a.html). А есть и просто исследования по новым аппаратным архитектурам для scientific computing, совершенно необязательно это "нейроморфные архитектуры", никаких нейронов, чистая математика с оптимизацией типовых операций, встречающихся в том числе в representation learning (помним, что в этой предметной области отнюдь не всё "нейроморфное"!). Получается, что мы на вполне дискретно-логических (тьюринговых, "теоретически строгих") машинах делаем эмпирические "аналоговые" вычислители, которыми вновь моделируем строгую логику -- более того, открываем эту новую логику в природе, распознаём без учителя много сначала более-менее "физических", а затем всё более логических уровней абстрации, тех самых, что у Gregory Bateson, тех самых что обсуждают философы, когда обсуждают объективацию -- способ, которым мы выделяем объекты из физического мира (и мира идей, впрочем тоже, который каждый раз оказывается более физичным, чем о нём можно было бы подумать. Ах, проклятие метафизики, от которой нельзя отмахнуться!).

Попутно начинают появляться аргументы против луддитов с их вечным "эти машины забирают нашу работу". Конечно, забирают. Так, порнографию из социальных сеток в прошлом году отлавливало до 100тыс. человек (кто б мог подумать!) -- http://www.wired.com/2014/10/content-moderation/. В этом году это делает нейронная сетка -- http://www.wired.com/2015/07/twitters-new-ai-recognizes-porn-dont/. Рраз -- и ста тысяч рабочих мест нетути! Рабочие места аналитиков спецслужб, надеюсь, тоже будут исчезать сотнями тысяч: работа-то у них похожая! Всё то же самое применимо и к спаму -- Гугль вот объявил, что с помощью нейросеток избавился от спама в gmail на 99.9% -- http://www.wired.com/2015/07/google-says-ai-catches-99-9-percent-gmail-spam/

Но как маленькая кучка капиталистов не захватила всех прибылей мира, потому как капиталистами (т.е. так или иначе получающими доход от вложенного в ценные бумаги капитала) стало подавляющее число населения в развитых странах, так и прибыль от эксплуатации роботов/инструментов/станков достанется отнюдь не только кучке их владельцев. Утеря работы руками не будет означать неминуемой утери дохода, ибо этой работой можно владеть через личное или коллективное владение роботом -- тщательно воспитанным и обученным (артигогика: http://ailev.livejournal.com/1011621.html, http://ailev.livejournal.com/1133262.html). Эти аргументы нужно ещё чистить и чистить, но они уже появляются: http://www.technologyreview.com/featuredstory/538401/who-will-own-the-robots/

Нет, учёный из Microsoft Research поторопился с выводами. Ещё не все низковисящие плоды сорваны, выход на уровень работы нейронных сеток, сравнимый с человеческими результатами не означает, что всё вдруг остановилось и дальше мы будем медленно-медленно приближаться к тому, что умеет человеческий мозг из настоящих белковых нейронов. Существование низковисящих плодов только-только начинает осознаваться, а инженеры быстро-быстро строят лестницы туда, куда исследователи даже не думали заглядывать, предприниматели находят новые вполне низковисящие плоды там, где их никто не ожидал.

Нейронная сетка это машина, её делают инженеры. Ей не нужно эволюционировать миллионы лет, как динозаврам для получения птички. Людям для создания летательного аппарата тяжелее воздуха потребовалось не так много лет. Главное было -- взлететь первому самолёту. Первая ЭВМ тоже случилась совсем недавно, а ведь Alan Kay утверждает, что компьютерная революция (классических фон-неймановских компьютеров!) ещё толком не началась -- http://ailev.livejournal.com/469995.html.

Если развить эту метафору, то первые глубокие сетки как раз только что взлетели (и пилот в них тождественен механику, как на заре авиации -- ситуация даже хуже, чем в первые годы космонавтики), как раз только выполнили первые программы (набранные в машинном коде переключателями "с пульта", если уж сравнивать их с первыми компьютерами -- да, именно настолько неудобно эти сетки сегодня конфигурировать и настраивать). Дальше всё не замедлится, дальше будет только ускоряться -- революция нейронных сеток ещё не началась. Более того, я даже не уверен, что это будет революция именно нейронных сеток, на слуху ведь ой-ой-ой сколько самых разных архитектур representation learning. А уж смесь из representation learning с его глубокими архитектурами, классической компьютерной революции (в её хардверной и софтверной части) и стремительно приближающегося квантового компьютинга может дать не то чтобы революцию, а гиперреволюцию. Ну, или не эволюцию мышления, а гиперэволюцию -- революция, эволюция, шмеволюция тут уже неважно.
[ << Previous 20 ]
About LiveJournal.com