Pull to refresh

Comments 152

Не очень понятно, как отвечать на «обладают способностью анализировать, например незнакомые объекты (их признаки)».

Вот есть задача классификации изображений (фрагментов), есть большой набор данных для обучения, есть свёрточная нейросеть. Нейросеть обучили, т.е. минимизировали функционал ошибки, зависящий от коэффициентов свёрток. А дальше, вместо того, чтобы использовать выход сети, посмотрели на промежуточные слои и сами ядра свёрток — оказалось, что нейросеть «нашла» ряд признаков, которые оказалось эффективно использовать в отрыве от нейросети. Считается ли это способностью анализировать? Или это просто поисковая задача в ограничениях, заданных программистом?
что нейросеть «нашла» ряд признаков, которые оказалось эффективно использовать в отрыве от нейросети

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


Хотя я не претендую на истину в последней инстанции (и возможно действительно двусмысленно), предложите лучшее название для этого ответа...

Сколько ответить на этот вопрос. Исторически для этой задачи использовались методы обучения, основанные на ручном построении большого числа признаков — составления фича-вектора, а затем натравливании различных методов обучения на него. Свёрточные нейронные сети позволили перейти от ручного составления признаков к автоматическому.

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


  • нашел искомый объект в руках объекта, характеризуемого словом "обезьяна";
  • объект "обезьяна" одета, возможно не является "обезьяной поедающей бананы", по видимому является "человеком"
  • объект "обезьяна" все-же является "обезьяной поедающей бананы", т.к. у нее волосатое лицо
  • объект "обезьяна" все-же является "человеком", т.к. последний признак это — борода а не шерсть.
  • ответ: это с одинаковой вероятностью может быть и огурец и банан

Т.е. сможет ли какая-либо известная вам сеть сделать анализ, не зная этих принципов и семантики таких признаков.


Как-то так, а предложения по более подходящему названию будут?

Опять же упираемся в вопрос что такое знание семантики и принципов? Т.е. если у нас в обущающей выборке будет достаточно размеченных данных по каждому пункту — то да, она сможет сделать такой анализ

Вы серьезно? В смысле, что сможет — и это действительно будет анализ а не, как уже говорилось, нахождение костылей (зацепок)...

Прочитал ваш диалог два раза. Не понял, о чем вы спорите. Дайте, пожалуйста, определение слова «анализ». Мне кажется, что вы по-разному воспринимаете это слово.

Мне почему-то тоже так кажется :)

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

Т.е. вы заявляете, что сеть сможет, если накормим ее просто картинками + ответом "банан", "огурец", "оба"?
А человек (не младенец, т.е. себе в уме), ниразу до того невидевший ничего из этого, но просмотревший ту же выборку — нет? Вы правда так считаете?


Или что вы имеете ввиду под "размеченых данных"? Я же вроде написал все эти признаки семантически не известны (поставим их в "равные" условия — ни сети, ни человеку)...

Человек посмотревший выборк сможет. И нейросеть посмотрев выборку сможет. Тут опять же хитрые нюансы — скажем так потеницальном сможет, и в ряде случаев сможет даже лучше человек.
Почитайте вот эту статью — https://habrahabr.ru/post/303196/

```Напомню прошлые вехи. Первая сетка, которая победила в Imagenet Recongition challenge, сделала это с ошибкой 15% в 2012. В конце 2015 допилили до 3.08%. Разумная оценка среднего результата человека — ~5%. Прогресс, как мне кажется, впечатляет.```

Про размеченные данные я отвечу выше. Да, там есть нюансы — но не все так однозначно.
Смотрите.

Мы можем обучить NN по картинке отличать банан от огурца. Ровно так же как обучают человека — показвая ей много раз различные картинки и говоря каждый раз — это банан, а вот это огурец. При том, ровно же как и человек, если ей показать апельсин который она до этого не видела — то она скажет что это не банан и не огурец, а что не знает. Ровно как и человек

Мы можем обучить NN по картинки отличать обезьяну от человека, аналогично. Причем даже когда последняя в одежде (и NN сама найдет уникальный признак «волосатое лицо» — указывать ей на это не нужно).

Далее можно совместить и получить NN которая будет отвечть на вопросы выше. Но при этом, если ей показать бегемота который держит в зубах арбуз — она скажет — я не знаю, что это такое, но точно не обезяна с бананом и т… п Ровно как и человек, котрый не разу не видел арбуза и бегемота

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

Далее, что самое интересное — если вы дообучаете NN отделять новый фрукт, то это не сломает всей системы — она сможет отвечать на вопрос — это человек или обезьяна с этим фруктом
и NN сама найдет уникальный признак «волосатое лицо» — указывать ей на это не нужно

Да ну… Позвольте угадаю — теоретик?


Вы видимо одно обязательное условие для нейросети пропустили:
Данные должны быть преобразованы к виду который можно отправить входным нейронам (т.е. должны быть как минимум первично обработаны другими алгоритмами)


А часто есть еще и вторичная обработка, свертка, фильтрация, развертка и т.д.


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


  • действительно ли это будет признак «волосатое лицо», а может просто "черный шум в районе круга где две точки и палка"? или просто вырастет вес в ассоциативной памяти нейрона, там где морды пробегают? Так я вам про то и говорю — волосатость не признак обезьяны, а обезьяна не признак банана (только вероятностная характеристика).
  • как признак «волосатое лицо» отличается от признака "бородатого лица" в виденьи нейронной сети?
  • насколько репрезентативна должна быть выборка, что бы один только признак "волосатости" улегся в "мозгу" сети твердым критерием признака банана?
  • это логическая цепочка или нет?

Я вам больше скажу, если вы будете кормить сеть так как вы написали выше — она у вас чаще будет говорить "банан", даже на обезьянах совсем без банана (умолчим уже про волосатых мужчин и мужчин с темной кожей, тоже соответственно без фруктов и овощей в руках).

У вас в тексте логическое противоречие.

>>> «Мы можем обучить NN по картинки...»
>>> "...NN сама найдет уникальный признак «волосатое лицо» — указывать ей на это не нужно"

NN может корректно находить только заложенные в нее руками признаки. Если ваша NN может определить что «видит» обезьяну с бананом, это не значит, что она может самостоятельно классифицировать фотку, где обезьяна с бананом — это картина в музее. NN не может самостоятельно научиться отличать изображения реальных объектов/явлений, от симулякров 1-го порядка (изображений их копий — например картин).

Кстати, на ДИАЛОГ-2016 приезжал мужик из Катара, который работает в подразделении IBM и пишет софт для Watson. Кому интересно, его статья и презентация есть на сайте ДИАЛОГа. Так вот, он рассказал что у Watson-а под жопой лежит слой «features», это своего рода вручную созданные паттерны для NN, позволяющие однозначно что-либо классифицировать. И однажды созданные паттерны не улучшаются. Они копятся там миллионами и конкурируют за эффективность. Так они пытаются решить проблему обучения Watson-а отличать годную инфу от информационного шума.

Похожий подход, к слову, используют ABBYY в своем Compreno.
А давайте еще пример.

Мы взяли человека, дале ему почитать много, много английской литературы. Потому мы даем ему кусок текста и просим определить автора — и он делает это достаточно хорошо. Делает ли он при этом анализ текста?

И опять же, если тоже самое делает NN и делает это лучше человека. Делает ли она при этом анализ текста?
Ну это смотря что понимать под анализом текста. Если любую обработку данных, тогда да, анализирует.
Потом мы даем ему кусок текста и просим определить автора — и он делает это достаточно хорошо.

Врядли, но допустим.


Делает ли он при этом анализ текста?

Да по вторичным признакам (отсеивая например поэтов если речь идет например гарантированно о фантастике)
Но в основном он использует при этом свою ограниченную память, ассоциативное мышление, интуицию и еще с десяток всего того самого...


Тоже самое делает NN и делает это лучше человека. Делает ли она при этом анализ текста?

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


Для анализа, в моем понимании у нейронной сети отсутствует самое главное — мыслительный процесс.


А иначе, можно сказать, что система полнотекстового индексирования (Lucene или SOLR, Sphinx и т.д.) тоже делает анализ… Хотя она его худо бедно и делает, но в рамках заранее заданных, запрограммированных условий.
Я же написал "например незнакомые объекты (их признаки)", что сходу исключает те же FT-машинки.

>Хороший вопрос, но боюсь что ответ в простейшем случае — нет. Она ищет признаки, за которые можно зацепиться, на поиск которых >его «запрограммировал» создатель сети и проектировщик правил workflow.

Нет, нет. В этом и прогресс, в этом и отличие RNN от других алгоритмов. Никаких признаков в NN не «запрограммировали», она сама их нашла. В этом и суть. Не закладывается никаких зацепок. Изначально голая нейроная сеть, на вход которой подается пословно текст и все.

Я боюсь как раз в не понимании это особоенности NN и есть причина вашего топика.
О, я вот тоже изучал нейросети до бума deep learning и тому подобного. Можете подтвердить/опровергнуть два тезиса?

1) Основная killer feature свёрточных сетей — это умение автоматически подобрать «правильные» признаки из потенциального «полного» набора. При этом данное умение явно полезно для computer vision, где на входе мы имеем картинки с тысячами возможных признаков. А вот, например, если мы хотим анализировать «короткие английские предложения длиной не более 10 слов», то с признаками и так всё более-менее ясно, и значит, каких-то откровений от новых методов ждать не приходится.

2) Даже если мы анализируем картинки, всё равно на вход такой нейросети идёт не просто «прямоугольник из 400*500 пикселей», а уже каким-то образом обработанная картинка, из которой выудить признаки легче, и значит, всё равно от ручного анализа и труда не избавиться.
1) Да, и эти признаки — свёртки. Раньше люди эти свёртки придумывали сами (фильтры Габора, базис преобразования Фурье и т.д.), в свёрточных нейросетях же они стоятся автоматически оптимальным образом (на самом деле нет, но это отдельный разговор).

Есть мнение, что в человеческом глазе данные обрабатываются подобным образом: информация, полученная с нескольких палочек/колбочек, сначала «кодируется», а потом передаётся по нерву.

2) Свёрточная нейросеть видит не всю картинку, а только небольшой её фрагмент, определяемый конфигурацией сети (размеры ядер свёртки) и для него выдаёт результат.

Свёрточная нейросеть отлично классифицирует текстуры (это локальные характеристики), но не может работать с формами объектов. Она не увидит разницы между леопардом и леопардовым диваном.
Свёрточная нейросеть отлично классифицирует текстуры
Справедливости ради ей только недавно начали предлагать картинки в динамике, и всё ещё не требуют от неё трёхмерного ориентирования. На таким образом сформулированной задаче просто недостаточно данных чтобы понять что леопардовый диван и леопард — не одно и то же. Статичный снимок не позволяет продемонстрировать ключевое отличие леопарда настоящего от плюшевого.
Свёрточным нейронным сетям нужны очень большие объёмы данных для адекватного обучения. Добавление третей размерности при текущем уровне развития теории просто сделает обучение невозможным или сильно ограниченным из-за необходимости подготовки данных для обучения.
О чём и речь. Ждём порыва.
То есть фильтры Габора и т.п. уже не понадобятся? Вот с точки зрения юзера, на входе просто картинка N*M пикселей, а там уже сеть сама думает, нужен ей edge detection, цветовые фильтры, снижение шума и т.п.?
Да. Некоторые догадки всё же используются для оптимизации (закладываются в архитектуру сети) и лучшей генерализации обучения сети, но можно и без них. Например, на MNIST (цифры 32х32) полносвязная сеть работает не хуже CNN. Но уже на CIFAR (картинки 32х32) свёртки помогают улучшать генерализацию для незнакомых картинок. В целом, feature engineering у нейросети уже немного лучше человеческого, иногда даже на 10-20% (правда, ценой расхода ресурсов на их настройку с помощью подготовленного набора данных и backpropagation). Так что автор статьи по поводу «анализа признаков» совершенно не прав.
Так что автор статьи по поводу «анализа признаков» совершенно не прав.

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


немного лучше человеческого

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

>Так что автор статьи по поводу «анализа признаков» совершенно не прав.
>а в месте с ним и 75% хабровчан, по видимому согласных в этом с автором, и не поставивших в этом пункте галку…
Понимаете в чём дело, сначала идёт длинный пост, в котором чёрном по белому сказано, что нейросети не умеют это делать, а под ним опрос.
Многие читатели, если не остановятся и не задумаются над каждым пунктом, и не отстранятся от автора — повторят в опросе мысли из поста. Так работает человеческая психика, это называется cognitive bias.
Более того, заметьте: чем больше оцениваемая компетентность человека, тем больше процент за данный пункт.
Заметьте, что ваш пост не описывает unsupervised learning вообще, а предложения в опросе сформулированы крайне неоднозначно — в данном пункте под «анализом» можно вспомнить человеческий «анализ» и отвечать на этот подпункт, можно зацепиться за фразу «и системы на их базе».
Так что я смотрю на это так, что 26% вспомнили про unsupervised learning и хорошо представляют, как осуществляется feature engineering, и предпочитают этот смысл неведовому «человеческому анализу».
А вам я ещё напомню про bAbI и Memory Networks — про которые всё таки мало людей знает, потому что это не Image Recognition и успехи там ещё не очень большие. Но, тем не менее, это именно уже «человеческий анализ» по смыслу: несколько прогонов по LSTM позволяют автоматически получить несколько логических преобразований суждения и делать логические выводы, автоматически учиться этим выводам и применять их к новой ситуации. Что это, как не интеллект, до этого присущий только человеку? Не знаю, как вам, а мне это крайне напоминает освоение навыков школьниками за партой.
Многие читатели, если не остановятся и не задумаются над каждым пунктом, и не отстранятся от автора — повторят в опросе мысли из поста

Эво как! Ну тады звиняюсь страшно что ввел в заблуждение… И ведь профессионалов тута же!


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

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


По поводу же упомянутых Image Recognition, Memory Nets и т.д. — попытаюсь показать на следующем примере (чуть с уклоном в математику):
Вот есть группа функций, оценку некоторых параметров которых удобнее делать например в первом приближении… Так вот выполнив приближенное вычисление с помощью полного дифференциала функции двух переменных, можно ускорить поиск некоторых упомянутых признаков в разы (ну и получить некоторые другие "вкусности"), но…
Можно ли затем сказать, что дифференциал обладает способностью к анализу, а тем более к анализу других (несвязных с приближением) признаков, и уж тем более неизвестных алгоритму вычисления полного дифференциала?
Можно ли здесь говорить о способности "делать логические выводы"?


Ну да те же MemNN сильно сложнее, ассоциативная память нейронов, все дела, но…
Строго говоря все вами вышеупомянутое в моем понимании не сильно отличается от описанного процесса приближенных вычислений…
И что касается способности анализировать и способности к логическому мышлению что у того, что у другого алгоритма — нет, от слова совсем...

По-моему, вы меня упорно пытаетесь тыкать в парадокс Китайской комнаты. Да, согласно разным определениям явления «понимания», «знания» и «интеллекта», то, что находится в китайской комнате, или интеллект, знающий и, что примечательно, действительно понимающий китайский язык, или «бездушный робот», не-интеллект, имитирующий знание китайского языка и совсем не понимающий этот язык.
Вы, видимо, считаете, что, пока компьютер не научится повторять человеческий ход мысли с точностью до багов, когнитивных искажений и совпадения модели мира, он не обладает «человеческой логикой», а значит, бездушный алгоритм.
Я вас переубеждать не собираюсь.
Моя позиция простая: если компьютерная система может на каких-либо задачах заменить человека, то это интеллект. Если не может — то нет. Memory Networks, Question Answering, Dialog Systems — все они плохонько, но могут уже отвечать на какие-то вопросы (так же как какая-нибудь Тесла или машина с круиз-контролем плохонько, но ездят по дороге).
Если смотреть с моей позиции, то нужно оценивать уровень интеллекта, а не смотреть на особенности реализации. Есть тесты на взрослый уровень мышления, а есть на детский и подростковый. И средний детский уровень интеллекта, судя по тестам, компьютер уже вполне преодолел. Наверное, на уровне среднего 8-летнего ребёнка сейчас, плюс минус два года. Всё внутри на хаках, держится на скотче, и проектировалось специально под задачу? Да бог с ним. Работает же? (И вообще, люди тоже не идеальны: то заболеют и не выйдут на работу, то клиента обманут или обматерят вместо ответа на вопрос, а про «проектирование под задачу» и разнообразные ограничения и особенности человеческого мозга человека я и упоминать не буду).

Я вас упорно пытаюсь "тыкнуть в парадокс", называемый у нас "buzzwords vs. intelligence" или "buzzwords vs. brain-power". В России это вероятно про поговорку "слышал звон, да не знает где он".


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


И я про то, что не нужно передергивать…


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


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


Прочитайте пожалуйста этот коммент, чтобы не повторятся тут


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

Для меня «нейросети» — это в первую очередь набор технологий, включающий в себя алгоритмы, данные, теорию, железо, и инженеров, которые умеют эту технологию применять для решения конкретных задач.
Может ли компьютер с помощью этих технологий анализировать признаки, не заданные при решении задачи? Да, может — пожалуйста, набор технологий «unsupervised learning», имеющий реализации с помощью технологий нейросетей и более конкретная технология под названием «autoencoder». Может ли компьютер с помощью технологии нейросетей ответить на вопрос, заданный текстом, и не запрограммированный инженерами? Может, если повторить технологии, описанные в соответствующих научных работах.
Мои ответы вполне согласуются с вашими вопросами, и, тем не менее, дают отличающийся от вашего ответ на большинство заданных вами вопросов.

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


А придумывать не нужно совсем, ибо


Может ли компьютер с помощью технологии нейросетей ответить на вопрос, заданный текстом, и не запрограммированный инженерами? Может...

НЕТ. И еще раз нет, и еще долго не сможет.
Вы сейчас только что, чуть не всех секретарей, референтов и т.д. и т.п. на пенсию отправили...

>Вы тогда с терминологией сперва разберитесь, что есть нейронная сеть (у которой строгое определение есть между прочим)… а потом уже лезьте холливарить, смущая других людей, и отвлекая автора от серьезной работы…
Что такое математическая модель под названием «нейронная сеть» я тоже в курсе, спасибо, сам с ними работаю, в т.ч. для работы с текстом.
Но вы сами в опросе написали «современные нейронные сети и системы на их базе», а не «голые нейронные сети без обвязки». Поэтому я и говорю про системы на основе нейросетей, про успешные применения технологии нейросетей для решения задач в современном мире, и про их возможности.
Разобрались с противоречием?

>>Может ли компьютер с помощью технологии нейросетей ответить на вопрос, заданный текстом, и не запрограммированный инженерами? Может…
(Поясню, вдруг вы не так поняли: программируют компьютер — люди, вопрос задают — люди, но ответ на вопрос люди не программируют. А то подумаете ещё, что компьютер сам технологию применяет. Такого сейчас нет.)
>НЕТ. И еще раз нет, и еще долго не сможет.
На НЕКОТОРЫЕ вопросы — УЖЕ может ответить. Так же как робо-машинки иногда успешно ездят. Не в дождь, на дорогах с разметкой, итп — но УЖЕ ездят по реальным дорогам. Понимаете теперь смысл аналогии?
Технологии от Watson и ЦРТ уже реально в колл-центрах на вопросы людей отвечают, а вы мне заявляете, что это не так! MemNN реально говорит, куда Фродо скинул кольцо, прочитав текст, и отвечает, что если справа от коридора кухня, то пойдя направо из коридора, попадёшь на кухню (это как раз человеческая логика). А системы Question Answering реально говорят, что на картинке играют в теннис и мяч жёлтый.
>Вы сейчас только что, чуть не всех секретарей, референтов и т.д. и т.п. на пенсию отправили…
Пока ещё нет, но их время обязательно придёт. Увы, возможно не очень скоро.
Средняя скорость прогресса в данной области (уменьшения процента ошибок) — по моим оценкам, где-то порядка 5-10% в год. (Тот же fasttext, наверное, даст процентов 10 у уменьшению числа ошибок поиска семантических отношений к word2vec на русском языке, наверное. А тот, по отношению к brown clustering от 1992 года — раза в два-три лучше, наверное?)
И проблема в том, что, видимо, для полной замены человека в этой области качество нужно очень хорошее, не меньше 99%. Сейчас где-то 70-80%, наверное, для той же задачи кореференции, и 90% для пословного синтаксического анализа, для question answering — может быть, вообще 20%.
Вот и посчитайте. С этой скоростью прогресса, ещё может лет 20-30 у людей-секретарей есть.
Но это если развитие будет линейным и если требовать от секретаря умения в т.ч. отвечать на вопросы по квантовой физике, а не только на вопрос, когда у шефа будет дырка в расписании.
Массовое население именно для того и нужно чтобы выполнять функцию инерции и отбора.
75% ещё попросту не приняли идеи, про которую уже в курсе половина исследователей как минимум. Они примут её позже, когда объём доказательств превзойдёт общественно-значимый порог. ( В общем случае надо оговориться, «если превзойдёт», но по факту в нейросетях это уже случилось в виде унсупервайзинг лёрнинга. )

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

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


Хотя я думаю, что вы не правы и про "массовое население" и про "незнание тонкостей"… Мы не на одноклассниках и ВК все же, верно…
Опять же в мире опенсорс, т.е. наличие исходников, предоставляет отличную возможность выяснить некоторые "тонкости" реализации, вплоть до поправить баг там и т.п.
И вы, имхо, снова не правы если считаете, что таких единицы… Почему-то мне все пытаются доказать, что люди глупее чем они есть (а то я мало разрабов за свой век повидал). Т.е. фразы типа "исходники nginx редко кто может читать" я слышу почему-то постоянно. При этом знаю лично с десяток людей (и добрую сотню заочно), прекрасно с этим справляющихся...

MNIST (цифры 32х32) полносвязная сеть работает не хуже CNN

28x28, actually. Ну и про "не хуже" у меня есть некоторые сомнения, основанные на информации с сайта Лекуна: http://yann.lecun.com/exdb/mnist/. State of the art полносвязная NN даёт результат похуже нежели CNN при ощутимо больших затратах на обучение (засчёт существенно больших размеров скрытых слоёв для получения сопоставимого результата).

В http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html рекордсмен всё же full-connected NN.
И если почитать топовые работы, то видно, что обе архитектуры идут на равных (Да и итоговые 0.21% error на 10000 тестовых картинках — это всего 21 ошибки, которые уже просто неоднозначности набора данных).

По вашей ссылке идём дальше на http://cs.nyu.edu/~wanli/dropc/, там на оригинальную статью и смотрим в каких условиях были получены эти 0.21%:


In order to improve our classification result, we choose a more powerful feature extractor network described in (Ciresan et al., 2012) (relu is used rather than tanh). This feature extractor consists of a 2 layer CNN with 32-64 feature maps in each layer respectively. The last layer’s output is treated as input to the fully connected layer which has 150 relu units on which NoDrop, Dropout or DropConnect are applied. We report results in Table 3 from training the network on a) the original MNIST digits, b) cropped 24 × 24 images from random locations, and c) rotated and scaled versions of these cropped images. We use an initial learning rate of 0.01 with a 700-200-100 epoch schedule, no momentum and preprocess by subtracting the image mean.

Ну и в таблице 3 уже, собственно получены 0.21% при использовании ансамбля сетей и без drop'а, и с dropconnect, что забавно. Также стоит отметить, что данный результат получен при использовании предобработки данных (crop + rotation & scaling, но без elastic distorsions).


Странно, что ссылки на эту работу нет на лекуновском сайте: он один из соавторов в обсуждаемой работе.

Свёрточная нейросеть отлично классифицирует текстуры (это локальные характеристики), но не может работать с формами объектов. Она не увидит разницы между леопардом и леопардовым диваном.
Текстуры выявляются на первых слоях сети, если бы дело было лишь в них, никто бы не стал городить архитектуры в сотни слоёв. Чем глубже в сеть – тем абстрактнее и высокоуровнее представления, ближе к выходам и формы можно представить.
Если Вы будете целенаправленно учить сеть различать леопардов от леопардовых диванов, она с этой задачей справится.
1-е я возьмусь опровергнуть. Свёртка это ещё и преобразование сильно, очень очень сильно снижающее размерность входных данных, до уровня уже достаточного для текущих вычмощностей. Не факт, что с появлением больших можностей не начнуть использовать меньше свёртки. Не факт, что с появлением других, более эффективных средств снижения размерности входа будет потребность в свёртке больше простейшей.

В задаче про предложения в 10 слов вопервых вы тоже сталкиваетесь с чудовищной массой входных признаков, с котррой боретесь векторизацией. Во вторых комбинаторная сложность задачи усугубляется фиговыми архитектурами рекурентных сетей со слишком большой избыточностью и необходимостью хранить историю весов на глубину на которую вы хотите распространять назад ошибку. Это если BP через время использовать.

Теперь допустим мы делаем более удачной архитектуру рекурентной сети и за счёт этого увиличиваете глубину её возвратного механизма с 3-10 знаков до 30-300 а неградой не на каждом шаге. Тогда ей на вход можно подавать уже не векторизованные корни слов, а буквально последовательность букв. Размерность входных данных ваще резко падает и мы получаем откровения новых методов даже на текущих вычмощностях.

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

В конце концов задача написания музыки, за которую недавно взялись гугловцы строго говоря сводится к тому же самому, а гугловцы по всей видимости, считаю задачу разрешимой в обозримые сроки.
> Свёртка это ещё и преобразование сильно, очень очень сильно снижающее размерность входных данных
Ошибаетесь. Свёртка — это просто вычисление признака, причём довольно затратное.

Для каждого пикселя можно вычисляться сотня таких признаков. Теперь представьте себе: была картинка 512х512, после первого слоя стала 512х512х100. Где тут уменьшение размерности?
А потом по ходу дела большую часть из этих слоёв повыкидывли за ненадобностью, из свёрток оставили только те, которые приводят кусок экрана к размеру 64х64 и получили ровно то, что собственно выигрывало в Atari. Не помню сколько там свёрток было оставлено, конкретно но мне кажется в итоге стало заметно меньше чем полноэкранная картинка плюс несколько слоёв для её первично обработки.
А на втором слое не повыкидывали за ненадобностью, а обработали, причём сурово: свёртками с трёхмерными ядрами. Вычислительные затраты здесь высоки. А потом третий слой, а потом на выходе снова 512х512, потому что именно это мы и хотели получить.

Все равно не понимаю, что вы имеете в виду. Свёртка — это математическое преобразование, не именяющее размерности. Размерность увеличивается, если используется несколько свёрток. И уменьшается, если выполняется, например, усреднение по какой-нибудь из размерностей.
Вот опять же, не совсем понятно. Если у меня на входе фраза из 10 слов, это не ахти какой великой размерности данные. Есть словарь языка, значит, у меня просто набор вида w1, ..., w10, где каждый элемент — это индекс слова в словаре.

Векторизацией мы занимаемся не ради снижения размерности, а просто потому, что из исходного набора очень трудно вычленить хоть что-то разумное. Вот если заменить каждый элемент wi на вероятность слова, то можно хотя бы сравнивать «похожесть» предложений с помощью скалярного произведения. Это совершенно неудовлетворительно, но хотя бы ясно, как осуществить.

Я это говорю к тому, что в данной задаче исходный вектор признаков (с точки зрения размерности) меня вроде как удовлетворяет, и искать автоматически «оптимальные» атрибуты не нужно. Или ошибаюсь?
Есть словарь языка, значит, у меня просто набор вида w1, ..., w10, где каждый элемент — это индекс слова в словаре
Т.е. это просто десятимерный вектор из целых чисел, соответствующих номеру слова? И что Вы с ним делаете? Любые векторные операции с ним бесмысленны, поскольку эти целые числа имеют категориальную природу, а не вещественную, т.е. среднее арифметическое или разность таких чисел не имеет никакого смысла.

По-хорошему нужно делать one-hot-encoding, когда каждому слову приписывается вектор длиной в размер словаря, в котором только одна единица на нужной позиции. Даже если у вас словарь Элочки-людоедки из 10 слов, то размерность пространства получается 1010 – если для Вас это проблем не вызывает, то я Вам завидую.
Абсолютно верно говорите, но в том-то и суть, что данные в моём представлении описывают ввод идеально точно, но толку от этого никакого. Если же вы предлагаете мне ещё как-то эти данные преобразовывать (в вектор длиной в размер словаря), это уже означает, что я должен продемонстрировать известную креативность, выполнив ручной анализ. И в этом случае не уверен, что использование автоматического алгоритма в deep learning мне что-то дополнительное даст. Всё равно головой думать приходится.
Вы уже преобразовываете свои данные из набора символов в вектор из целых чисел. С этой точки зрения количество креативности и ручного анализа между вектором индексов и one-hot кодированием одинаковое.

Кроме того не следует забывать о принципе garbage in – garbage out. Если алгоритм ожидает векторизованное представление, где для каждого признака определены сложение / умножение, а Вы подаёте на вход что-то, такими качествами не обладающее, то странно на что-то рассчитывать.

должен применить какую-то креативность, выполнить ручной анализ. И в этом случае не уверен, что использование автоматического алгоритма в deep learning мне что-то дополнительное даст. Всё равно головой думать приходится
Если Вы думаете одномоментно и «цена» раздумий всегда одинакова, то всё так. Но вот я, например, иногда думаю всего пару минут, а иногда могу годами размышлять без особого успеха, вот про P? NP ничего дельного пока не надумал. Если бы я мог подумать примерно столько же, сколько я думаю в ходе партии в шахматы, а потом применить какой-нибудь автоматический алгоритм в deep learning и решил бы задачу, я бы порадовался.

Ну, а если бы думать не надо было, то и решать такую задачу тоже не было бы необходимости, поскольку она уже была бы автоматизирована.
> С этой точки зрения количество креативности и ручного анализа между вектором индексов и one-hot кодированием одинаковое.

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

> подаёте на вход что-то, такими качествами не обладающее, то странно на что-то рассчитывать.

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

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

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

> Не понял аргумента. Какие свойства? Почему нейросеть должна их сохранять?

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

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

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

Выше мы обсуждали, что свёрточная нейросеть может догадаться применить такого рода фильтр самостоятельно, а это тоже весьма нетривиальное преобразование, вполне сравнимое с превращением предложения в вектор нулей и единиц
Хотите сказать, что сеть сможет научиться конвертировать вектора из индексов в one-hot вектора? Ну, гипотетически, наверное, сможет, но это нетривиальная операция, которую можно будет сложно выучить. В обучении сетей мы, конечно, продвинулись, но это ещё не до конца решённая задача.
Хотите сказать, что сеть сможет научиться конвертировать вектора из индексов в one-hot вектора?

Собствено пока не научатся наши возможности применения сетей так и будут недостаточны. Самый простой датасет на котором можно изучать алгоритмы пригодные к этому и непригодные, который я использую — преобразование двоичного представления числа к float и наоборот. Алгоритм, который справится с этой задачей без слишком активного использования мозга настройщика, как мне кажется, и откроет дорогу ко всему классу таких задач.
Не факт, что с появлением больших можностей не начнуть использовать меньше свёртки
На полносвязные слои точно не заменят, т.к. свёртка локальна, а натуральные сигналы как правило обладают локальностью.

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

У меня вопрос, что для вас "голая" нейронная сеть?
Если под этим словом вы подразумеваете "необученая" то возможно я понимаю половину из всего вышеописанного вами.
Если под этим словом вы подразумеваете "ненастроенная", "незапрограммированная", "неотформализованная", тогда — нет, от слова совсем.


Вы понимаете, чем например тот же SOLR от Lucene (оба не NN) друг от друга отличаются?
А то, чтобы получить более-менее приемлемый результат, тот же SOLR нужно "настроить" и отконфигурировать чуть не для каждого core (поля, фильтра, языки, пре- и пост-процессинг, stop-word-list, и так далее и тому подобное). А это штука, из коробки заточеная на полнотекстовое индексирование...


Я боюсь как раз в не понимании это особоенности NN и есть причина вашего топика.

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

Вы понимаете, чем например тот же SOLR от Lucene

Интересное противопоставление, учитывая, что Apache Solr, равно как и ElasticSearch используют внизу Apache Lucene..

дык то то и оно, одно — коробочный продукт, другое — API, которое используется… Применительно к неросетям имел ввиду "а вы попробуйте чистый Люсин юзать"… У меня в парочке проектов был — я очень рад, что "переехал" на Solr...

Ну lucene не API, а собственно библиотека. Мы, кстати, в некоторых вещах наоборот с solr'а на lucene уехали ,) А где solr — ещё 4.10.x живёт, на 5/5.5/6 пока не съезжаем, в 5 были очень неприятные регрессии по производительности.

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

Ну грубо говоря, сверточные нейросети фигачат гигантский фича-вектор, в котором потом «что-то находится», большая часть признаков уйдет в мусорку, но часть сработает и получит значимые коэффициенты. Дальше, благодаря свертке из всей кучи фрагментов изображений, найдутся те, которые попадут в нужные нейроны.
А можно на примере? Вот сети на вход подают картинку из видео игры + данные из ячейки памяти отвечающией за score

Далее, сеть научилась играть в игры — т.е. проходить уровень за уровнем. Означает ли это что она проанализировала игру, и нашла «неизвестные» признаки — т.е. как нужно играть в игру (какие кнопки нажимать) чтобы выйграть? Т.е. по факту нашла правила игры — является ли это ответом да на ваш вопрос?
Далее, сеть научилась играть в игры

Вы серьезно это спрашиваете?


Т.е. по факту нашла правила игры

Тогда — да (она анализирует). Более того, тогда вы чуть не везде можете смело галочки ставить...

Да безусловно я серьезно. Игры простые — но это вопрос в целом маштабирования (хотя и ряд других проблем есть)
Ключевые слова — deep reinforcement learning
Ключевой пейпер — http://www.nature.com/nature/journal/v518/n7540/abs/nature14236.html и https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
Ключевики для гугла — «neural network Atari games»

Насколько я знаю, в Гугле уже активно работают над игрой в StarCraft
Более того, вы можете это повторить у себя дома сами
А вот, даже на Хабре есть — https://habrahabr.ru/post/279729/

Я прекрасно это все знаю, а теперь откатитесь в ветке назад, и прочитайте что вы написали:


Вот сети на вход подают картинку из видео игры + данные из ячейки памяти отвечающией за score

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


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

Никаких сложнейших алгоритмов там нету, это раз. Т.е. это просто NN и все. Т.е. это инструмент общего характера. А во вторых — это ровно то, что делает человек когда учится играть в незнакомую игру. Он пробует различные дейсвия и смотри на результат. И далее, смотрит какие дейсвия привели к наилучшему результату и на основе этого учится играть. В чем разница между NN и человеком в данном случае?

Когда я смотрю, как мой двухлетний ребенок учится играть в новую игру на айпаде — это реально очень похоже на то как обучается NN.

>Она как максимум тупо повторяет анализ человека, сделанный к тому же еще и брутом… (ну и делает распознавание заученных «картинок»)

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

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


Вы хотя бы примерно представляете себе как работает action-value функция описывающая "reinforcement learning algorithm" для игры? Даже для такой простой на Atari...


Про StarCraft же это троллинг высочайшего уровня (или средство безболезненно распилить неплохой такой грант).


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

и


в Гугле уже активно работают над игрой в StarCraft

Как соотносятся два эти ваши высказывания меж собой?

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

>Как соотносятся два эти ваши высказывания меж собой?

Очень просто, это не будет NN играющая, только в SC — это будет NN общего характера, которую потенциально можно будет применить и к другим играм. Как сейчас одна и таже сеть обучается и играет в различные Atari игры, так и это обудет одна сеть, которая сможет играть в WarCraft и т.п. игры
«учили» брутфорсом ака «вычислим перебором всех действий на один шаг максимальное из предсказаний прошлой сети», это куда отнести?
Это называется «жадный алгоритм», и работает он только для матроидов. Вряд ли хоть одна тамошняя игра была матроидом.

а теперь почитаем оригинал ревью...


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


а так то конечно, да — берём любую сеть, учим её на картинках + score,… абракадабра — профит (сарказм если чо)
т.е. не надо ни action-value ни другие функции писать, не входные описывать, ни фильтра, ни пограничные условия, ничего из того что там в ревью стоит… просто берём сеть и учим её (магией видимо) скрином+скором… И главное она потом даже другие подобные игры пройдёт! (опять сарказм если что). И ничего что стрелять там в отличии от предыдущей нельзя, цель не только пройти до ворот, но и запульнуть какой-нить бякой (которую нужно найти в телепорте и подобрать) в "боса". А сделать это можно только когда он идёт от тебя, т.е. в спину.


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

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

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

И главное она потом даже другие подобные игры пройдёт!
А что, не прошла? Я в статье вижу множество игр, где одна и та же сеть без каких-либо изменений в архитектуре или способе обучения, превосходит профессионала-человека.

Я вот честно удивляюсь, что некоторые люди, через параграф читают или целые страницы пропускают, от слова по диагонали...
Оставьте свой ad hominem при себе, в приличном обществе всё-таки находитесь. Минус за это.
Вы упускаете unsupervised learning и конкретно autoencoder-ы, которые позволяют «не затачивать» сеть под определённые признаки и действительно самостоятельно анализировать и находить признаки — и, кстати, временами не хуже человека. В ML также очень много подобных алгоритмов, не основанных на нейросетях.
Ответил «скорее да, чем нет», поскольку Искуственный Интеллект, это именно оно и есть, а не нейронные сети ака классификаторы.
Кроме того я лично знаком с некоторым количеством людей, активно проектирующих и использующих нейросети в повседневности, и пока что ни от одного из них не слышал про сногсшибательный прорыв в использовании нейросетей (что касается интеллекта последних).

За пару лет нейросайнс фактически похоронил весь традиционный Computer Vision, Voice Recognition, Language Recognition и тд и тп… и вы хотите сказать, что это не выдающееся достижение сеток?

Нет, не похоронил ещё. Сверточные нейронные сети, хотя и дают шикарный результат, очень вычислительно затратны.
  1. И где тут противоречие? Вы видимо кое-что пропустили… Я ведь написал "что касается интеллекта последних"


  2. А можно подробней про "Language Recognition" похоронили, а то это как-раз "моя" тема...
Моя тема — обработка изображений. В чём разбираюсь, о том и пишу.

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

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

Все это хорошо, правда.


Одно только: где здесь слово "интеллект"?

Как известно «искуственный интеллект» это то, что мы ещё не научились делать.
Всего год назад выигрыш в Го у человека был не просто искусственным интеллектом, но ещё и бесспорной демонстрацией функции интуиции, а сейчас это всего лишь алгоритм с самообучением.
Я вообще стараюсь избегать слова «интеллект», потому что ассоциирую его исключительно с человеческими способностями.

я ждал, что кто-нибудь приведёт его...


Согласитесь между "появился новый" и "порвал как тузик грелку" есть повидимому какая никакая разница…
Я вам больше скажу — при заявленных точности/скорости оно не сильно лучше простейшего перебора совпадения встречающихся стоп-слов с более-меннее длинным стоп-листом… А уж полнотекстовые индексеры справляются с этой задачей и по давно в разы лучше, безовсяких нейронов

Цель cld, как можно судить по его названию, — маленький размер и с этой задачей cld3 справляется лучше. Конкретных значений размера, точности и скорости гугл, к сожалению, пока не опубликовал. Точность cld2 (использующего списки слов) уже сейчас всех полностью устраивает, так что повышать ее не имеет смысла.
За пару лет нейросайнс фактически похоронил весь традиционный Computer Vision, Voice Recognition, Language Recognition и тд и тп… и вы хотите сказать, что это не выдающееся достижение сеток?

Существующие сверточные сети сейчас могут только классифицировать, сегментировать, находить объекты на изображениях — это далеко не весь Computer Vision. Тем более чтобы хорошо научиться нужно не менее 1000-2000 изображений на класс. Про NLP похожая история. До интеллекта как до луны пешком.

Также они могут считать оптический поток, искать стереосоответствия, гомографию между кадрами, лэндмарки для лиц/тел, вычитать фон в видео и тд и тп… сейчас DL покрывает существенную часть CV задач, при этом на большинстве проблем сетки с большим перевесом обходят традиционные подходы.

Понимаете, ничто не ново под Луной. Я с большим интересом смотрю за развитием новых подходов, но излишний ажиотаж никому добра не приносит. Не знаю, как там с computer vision, но вот в области NLP мы примерно ту же картину (переход к data-driven approaches) наблюдали все девяностые годы. Апофеоз этой работы — google translate*, его качество каждый может оценить самостоятельно. Прогресс очевиден, но проблема в том, что у каждого подхода имеется некоторый теоретический потолок, и ажиотаж заканчивается ровно тогда, когда мы об этот потолок ударяемся. Вопрос лишь в том, сколько классов задач удачно впишутся в промежуток между потолком старых и потолком новых методов.

*google translate для некоторых языковых пар (ЕМНИП, английский-французский) использует SYSTRAN, а это вообще самая старая система машинного перевода из доживших до наших дней, целиком работает на правилах.
Насколько я помню, на Optical Flow и поиске лэндмарков на лице НН все еще несколько сливают традиционным подходом. Причем поиск лэндмарков так же делается с использованием МЛ.
Касательно теста Тьюринга, нейросеть его очень скоро пройдет.
Возьмите, например, альбом «Нейронная оборона», написанный нейросетью. В опросе на «Медузе» 40% пользователей затруднились отличить текст Летова от текста компьютера. Если мы возьмем еще более узкую область, то там еще сложнее.
Насчет «Скайнета» — можете называть меня параноиком, то я думаю, что он будет создан на нашем поколении. Лет через 20 плюс-минус.
Уже сейчас почти все есть:
— робот обыграл человека в Го — игру с сумасшедшим количеством комбинаций,
— причем для его обучения партии реальных игроков использовались только на стартовом этапе, дальше он играл сам с собой, доучивался, наигрывал самые разные комбинации
— робот победил человека в военном авиасимуляторе — это значит туда сейчас такие деньги потекут, будет создаваться самостоятельное роботизированное оружие.
Я тоже считаю вероятным изобретение сильного ИИ в текущем столетии (побоюсь говорить про 20 лет), но перечисленного Вами «всё есть» на мой взгляд недостаточно. AlphaGo сыграл безумное количество партий в игре с чётко заданными действиями. В реальном мире всё сложнее: возможных действий невероятно много, критерии достижения цели размыты, а сама цель может быть сильно удалена во времени, нет возможность разыграть миллион партий для самообучения.
Пока все ИИ будут узкоспециализированными. Вначале AlphaGo — здесь сеть уже показала, что она освоила игру, очень многие возможные варианты и исходы в ней. Кстати, в одной из партий она сдалась по-джентельменски, то есть адекватно оценила свои шансы и решила, что они меньше 20%. Правила хорошего тона в Го говорят, что в этой ситуации неприлично заставлять более сильного игрока тратить время на доведение партии до конца — потому что это уже не игра, а банальный разгром и потеря времени обоих — более благородно сдаться в этой ситуации.
Очень хочется посмотреть на ее игру с чемпионами мира. Думаю во время партии разработчики нашли массу разных вариантов как улучшить ее работу. Ждем внедрения улучшений и будем болеть )
Насчет времени — сейчас все очень сильно ускорилось. Ведь предполагали, то обыграет человека, но существенно позже. Здесь ожидания были, что она хотя бы 1 партию продержится прилично. А в итоге победа 4:1.

Как раз цели машине можно описать очень четко. Например, для воздушного боя — кроши противников, за каждого по столько-то «очков», за попадание в опасную ситуацию (например, допустил заход врага в хвост) — штрафные баллы и так далее.
Знаете, что здесь самое страшное? В машину можно заложить даже самопожертвование. Алгоритм будет каждую секунду может сравнивать потенциальный профит (уничтожение врага, изменение положения в воздухе, открытость тылов и пр.) и собственную стоимость машины. В норме она стоит дорого. Но, скажем, если машина видит, что она частично подбита, топлива мало, а флагман противника «открылся» и можно протаранить его двигатель, бомбоотсек или еще что-то жизненно важное, то она легко примет решение об атаке. Быстрее человека. Потому что ценность ее «жизни» — четко понятная математическая величина, у нее нет родственников, моральных вопросов и прочего, что может останавливать от чистой выгоды.
Не хотелось бы продолжать рассуждения в духе «вероятного противника»… Но сейчас одно из самых слабых место их армии — высокая ценность жизни отдельного человека, поэтому ряд выгодных с т.зр. боя действий заблокирован. На другом конце света наоборот — другая культура, другая ценность жизни — воин пойдет на жертву, если видит, что «прихватит с собой» много противников. Переход к машинам, как раз даст колоссальный профит первым. Даже по самом циничному подсчету: камикадзе — это не просто так, его же еще надо научить летать. Нельзя взять и посадить сто крестьян за штурвал. Построить машину быстрее, чем вырастить и натренировать хорошего воина. Штампуй на заводе, заливай наилучшую прошивку и… в бой.

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

Чем еще показательна победа AlphaGo? Тем, что самое большое развитие ИИ получил именно за счет игр с самим собой. Очень большой вопрос был — а насколько вообще адекватно, такое обучение? Это развитие или «варение в собственном соку»? Ведь тут очень тонкая грань. Легко уйти в положительную обратную связь и машина будет сама с собой разыгрывать одну и ту же идиотскую партию. Поэтому проверка с реальным противником крайне важна. Практика показала, что ИИ развился и очень хорошо.
То есть понимаете. Через некоторое время даже учения войск будут виртуальными. Например, генералы придумали новую тактику, ее отрабатывают на поле. За всем этим следит разведка, и тут же вырабатывается противотактика. А если «учения» будут проходить на симуляторах? Только кибер-разведка.
Кстати, в одной из партий она сдалась по-джентельменски, то есть адекватно оценила свои шансы и решила, что они меньше 20%.
Конкретно эта логика была запрограммирована человеком, а не «выучена» системой.
Думаю во время партии разработчики нашли массу разных вариантов как улучшить ее работу.
Я сильно сомневаюсь в этом. Разработчики сами признавали, что понятия не имеют, о чём нейросеть «думает» в процессе игры, вряд ли всего лишь 5 партий позволят им внести какие-либо существенные коррективы. В самом деле, в основе AlphaGo лежат миллионы чисел, описывающих используемую нейросеть, и никто не знает, что каждое из них делает, поэтому и как там что-нибудь поправить никто не знает.

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

> Разработчики сами признавали, что понятия не имеют, о чём нейросеть «думает» в процессе игры,
Вообще, все машинное обучение — это построение эмпирическим путем некоей формулы (в линейном случае — полинома, в НС — набора весовых коэффициентов), которая пытается давать ответ в ситуациях, которых не было в процессе обучения. Далеко не все понятно, что там внутри происходит. С другой стороны — сейчас есть интересные эксперименты по «распутыванию» нейросетей, попытке выявить наиболее значимые факторы для нее.

> Вот Вы только что взяли и ушли от Сильного ИИ к Слабому, сузив область решаемых задач. Я же говорил про Сильный ИИ, способный делать всё, что делает человек
Мне кажется, что разница между ними только количественная. Принципиально то, что одна и та же система с разной обвязкой очень хорошо делает самые разные задачи. Вопрос в связи с внешним миром, отдельными модулями коммуникаций. Все как у людей: разные зоны мозга отвечают за разные активности, есть разные органы чувств и действий. Осталось допилить эти «обвязки». Впрочем, мне кажется, что скоро не надо будет программировать — они будут так же с помощью ML обучаться на информации из нескольких базовых сенсоров.
С ростом производительности компьютеров все эти разные активности можно будет объединить в одной коробке. Текущих ресурсов не хватит на 3 совершенно разных дела: игра в го, авиасимулятор и стихи — все выйдет очень посредственного качества.
Я имел ввиду в первую очередь корректность оценки шансов во всем диапазоне вариантов
А откуда Вы знаете про корректность оценки шансов? Никто не знает, действительно ли шансы на победу были 20%. Быть может, существовала детерминированная стратегия, гарантированно приводящая одного из игроков к победе из сложившейся ситуации.

Вообще, все машинное обучение — это построение эмпирическим путем некоей формулы (в линейном случае — полинома, в НС — набора весовых коэффициентов), которая пытается давать ответ в ситуациях, которых не было в процессе обучения. Далеко не все понятно, что там внутри происходит
Для простых алгоритмов вроде логистических регрессий, деревьев решений или даже SVM можно как-то интерпретируемо сказать, почему модель сделала именно такое предсказание. Работы по интерпретации сетей ведутся, но модифицировать уже обученные сети руками это не помогает.

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

Кроме того, уже сейчас все эти системы потребляют на порядки больше электричества и производят больше вычислений, чем человеческий мозг. Это в основном связанно с потребностью в больших объёмах данных для обучения с нуля. В этом, как мне кажется, и кроется проблема: человек (почти) никогда не учится с нуля, у человека всегда (кроме рождения и то не факт) есть какой-то предыдущий опыт, который он использует для анализа новых данных, выстраивая логически согласованную картину у себя в голове. У нейросетей, обученных под конкретную задачу не будет такой общей картины, что и не даст им стать сильным ИИ.
А откуда Вы знаете про корректность оценки шансов? Никто не знает, действительно ли шансы на победу были 20%. Быть может, существовала детерминированная стратегия, гарантированно приводящая одного из игроков к победе из сложившейся ситуации.

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

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

Так это следующий шаг.

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

И паровозы поначалу больше пыхтели, чем совершали полезной работы.
Это нормально. Учтите, что даже работа с GPU — всего лишь эмуляция работы настоящей нейросети. Настоящая нейросеть работает почти полностью параллельно. Как будто у нее миллиард маленьких процессоров, а не быстрое переключение между сотнями. Кроме того, она аналоговая — то есть каждый нейрон не считает циферки за отдельные такты, а за 1 итерацию выдает результат.

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

Я считаю, что это вопрос ресурсов. На текущем этапе мы просто не можем себе позволить обучить одну сеть всему. Но, повторюсь, это проблема не качественная, а количественная. Будут ресурсы — будем больше и лучше считать на одной сети.
Я думаю, что в этом случае судьи и комментаторы непременно бы сказали, что машина зря сдалась, или, наоборот, могла бы сдаться.
«А судьи кто?» Люди про оптимальность ничего не знают.

Так это следующий шаг.
Это не просто следующий шаг, а целая пропасть, отделяющая успехи текущего дня от Скайнета. И это будет существенный прорыв, без этого нельзя заявлять «уже почти всё есть».

Настоящая нейросеть работает почти полностью параллельно. Как будто у нее миллиард маленьких процессоров, а не быстрое переключение между сотнями.
Только «процессоры» там довольно малопроизводительные, а на каком-нибудь одном nVidia Titan X находится 3 584 ядер, каждое из которых работает параллельно от остальных при правильной организации вычислений.

Я считаю, что это вопрос ресурсов. На текущем этапе мы просто не можем себе позволить обучить одну сеть всему. Но, повторюсь, это проблема не качественная, а количественная.
Я уже говорил, ручное обучение под конкретную задачу не масштабируется, нужны новые подходы для эффективного обучения без огромного количества размеченных данных.
По поводу Го:
— Роботов там замечено не было, фишки ставил человек
— Именно нейронная сеть в Го играть не умеет, играл алгоритм, с брутфорсом итд. НС были использованы для оценки ситуации на доске/быстрого брутфорса на большой глубине. Идея замечательная, не спорю. Вот только по сути мы имеем нечто аналогичное алгоритму игры в шахматы, только вместо точных рассчетов (как, например, базы эндшпилей), используется эвристическая оценка от НС (весьма хорошая). Справедливости ради замечу, что алгоритм основанный чисто на оценке НС играл на неплохом уровне, но до Ли Седоля ему было как до Луны.
— Некоторые тонкости игры всё равно пришлось заложить в алгоритм. Многие фичи были созданы людьми (наличие специфичных паттернов). Так что нельзя сказать, что сеть всему самообучилась
— По поводу «джентельменского» поведения вообще смешно, в программе просто была элементарная проверка (опять же, заданная людьми, сдаваться сеть никто не учил)

Так что в целом отношение к AlphaGo весьма соотносится с темой, поднятой в статье — не стоит переоценивать её способности как ИИ.
> — Роботов там замечено не было, фишки ставил человек
А вы хотели чтобы фишки ставила механическая рука? ) Да, это выглядело бы футуристичнее.
Только соль не в этом: задача ИИ — сказать куда ставить.

> нейронная сеть в Го играть не умеет, играл алгоритм,
В любой задаче НС — только часть алгоритма. Есть алгоритм для подготовки входных данных и есть для обработки выходных. Вы смотрѝте на возможности комплекса целиком, а не только то, что у НС «нет рук».

> алгоритм основанный чисто на оценке НС играл на неплохом уровне, но до Ли Седоля ему было как до Луны.
Как говорят в спорте: «результат на табло».

> нельзя сказать, что сеть всему самообучилась
Естественно, ее направили, подготовили вход и выход. Я говорю про ключевую часть — самосовершенствование без учителя. Сама с собой играет и собирает статистику, насколько каждый вариант хорош, как лучше поступить в такой-то ситуации. Не просто берет и грузит в себя базу эндшпилей и потом паттерн-матчингом определяет куда идет игра. Или с ней сидит лучший игрок мира 10 лет не вылезая.

> По поводу «джентельменского» поведения вообще смешно, в программе просто была элементарная проверка (опять же, заданная людьми, сдаваться сеть никто не учил)
Это очевидно. Но корректно работающая при адекватной оценке вариантов, согласующаяся с оценкой экспертов. Т.е. все ключевые правила были реализованы в системе.

> Так что в целом отношение к AlphaGo весьма соотносится с темой, поднятой в статье — не стоит переоценивать её способности как ИИ.
Конечно, переоценивать не надо. Я и пишу — «узкоспециализированный». В специфических задачах у ИИ есть отличные шансы опередить человека, а в широкой области ИИ пасует перед человеком. Пока. В статье критика типа «AlphaGo выиграла в Go, а в Чапаева бы проиграла даже мне». Конечно, проиграла бы. Потому что ее этому не учили.
В статье критика типа «AlphaGo выиграла в Go, а в Чапаева бы проиграла даже мне».

А вот теперь подробней, это где это подобное в статье написано?

Это гипербола, примерно как с калькулятором.
Вы говорите про блестящие достижения по отдельным направлениям так, что в этом можно прочитать «все остальное-то она еще не смогла».
Важно ведь не то, что калькулятор быстрее и точнее человека считает, а экскаватор быстрее копает. На текущем этапе важно, что одна архитектура с разной обвязкой, опередила человека сразу в нескольких совершенно разных направлениях творческой и интеллектуальной деятельности. Это не 3 принципиально разных механизма обыграли человека в го, авиасимуляторе и написали стихи. Конечно, с нынешними ресурсами все это нельзя сделать в «одной коробке». Поэтому их 3 и у каждого своя специализация и особенности структуры, чтобы взять их вот так просто смешать в один котел. Но это вопрос времени.
Дальше будет как количественный рост, так и оптимизация вычислений, разные вариации архитектуры НС, поиск вариантов упрощения и отсечения ненужных данных и пр.
На текущем этапе важно, что одна архитектура с разной обвязкой, опередила человека сразу в нескольких совершенно разных направлениях творческой и интеллектуальной деятельности.

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


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


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

И великолепно, и дай-то бог что это все так и будет, но… это я, по вашему, тоже в статье где-то под сомнение ставил?

А вы хотели чтобы фишки ставила механическая рука?

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

В любой задаче НС — только часть алгоритма.

Ну как же, в сознании у многих, очевидно, нейросеть сама играет.

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

И в чем уникальность/необычность этого метода? Заметьте, алгоритм не менялся самостоятельно, улучшалась лишь эта самая «паттерн-матчинговая» часть.
> Нет, вы просто утверждали, что человека победил робот.
Да, «робот» в значении «искусственно-созданный игрок», как противопоставление обычному игроку — человеку.
Робот же это не только Вертер или Бендер )
Суть выигрыша в го не том, чтобы поставить камень идеально на точку (в этом пусть соревнуются промышленные роботы, они без вопросов точнее человека поставят камень), а в том, чтобы вычислить идеальное место куда его поставить. Поэтому отсутствие у этого «робота» не мешало ему играть.

> Ну как же, в сознании у многих, очевидно, нейросеть сама играет.
Ну как сказать, с одной стороны, без «обвязки» она ничего не сделает, с другой — она ключевой элемент.
В разных алгоритмах для игры в Го разное «ядро» и разная обвязка. Но выиграл построенный на нейросети, а не на других подходах.
Поэтому условно для простоты и говорят, что «выиграла нейросеть.»

> И в чем уникальность/необычность этого метода?
В том, что он достиг цели и при этом оказался крайне универсальным.
Одна и та же архитектура (нейросеть) с разной обвязкой смогла конкурировать или даже опередить человека в сферах, где раньше казалось, компьютеру делать нечего: го, авиасимулятор, стихи.
Ну как сказать, с одной стороны, без «обвязки» она ничего не сделает, с другой — она ключевой элемент.

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


Про обвязку, — вот это пока (и имхо еще очень долго) — ключевой элемент.


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

Это не аргумент за NN в этой дискуссии (тоже самое вы можете сказать например про тот же CPU/GPU и компания, которые развились настолько, что позволили это сделать)...

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

Насчет железа не соглашусь — при всей его важности и необходимости, это не более чем среда выполнения.
Она может быть совсем другой — например, нервная сеть живых организмов. Там нет никаких процессоров, но правильные решения принимаются по тому же принципу.
Более того — среды выполнения может вообще не быть! Здесь же на хабре есть пример из нейросети с одним нейроном, которая решает поставленную задачу. Когда сеть натренирована (то есть вы уже знаете все весовые коэффициенты), вы можете подставить входные данные, перемножить на веса, проверить функцию активации и получить результат. Такую нейросеть можно посчитать даже на бумажке.
В примере с Го такое, конечно, не пройдет — соперник не станет ждать годами, пока вы сделаете ход.

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


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

Каждый элемент сложен и важен, но в разной степени.
Я просто стараюсь выделить суть, то без чего ну совсем никак не получится.
«Среду выполнения» мы можем заменить калькулятором — мы просто проиграем количественно во времени, но сможем достичь того же качества. Согласны?
«Обязку» — можно заменить на другие алгоритмы, и более того, мы должны будем их заменить, если возьмем вместо нейросети линейную регрессию или решающие деревья. Просто их одного и тоже же формата исходных реальных данных конвертировать в разные форматы входных данных комплекса. Так?
Нейросеть заменим на… ой, а на что мы ее заменим? На линейный классификатор? На svm? Гребневую регрессию? На паттерн-матчинг предварительно вбитого триллиона вариантов развития ситуаций? В том-то и проблема, что НС пока не получилось заменить на что-то, что может выполнить ее задачу так же качественно, пусть с задержкой по времени, затратой доп ресурсов и пр.
Поэтому я и считаю ее ключевым незаменимым компонентов.
Впрочем, это не обозначает, что нельзя придумать ничего лучше. Уверен, можно. Просто еще не придумали.
Да, «робот» в значении «искусственно-созданный игрок»,

Извините за занудство/придирки к словам, но робот — это именно машина для выполнения физических действий. Не то, чтобы это было здесь важно, просто это опять же создает фантастичный оттенок, объединяя роботов, искусственный интеллект и нейронные сети. В итоге неподготовленный ум воспримет это как «благодаря нейронным сетям был создан робот с искуственным интеллектом, который играет в Го», а не более прозаичное «был создан алгоритм игры в Го, который использует нейронные сети для оценки позиции на доске, т.к. для Го сложно создать простую оценочную функцию».

В разных алгоритмах для игры в Го разное «ядро» и разная обвязка. Но выиграл построенный на нейросети, а не на других подходах.

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

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

Нет, я понимаю, что он был успешен, но метод не специфичен одним только НС. По сути имеем дело опять же с задачей оптимизации. Архитектура сетей для разных задач, кстати, весьма разная и настройка гиперпараметров — это особое искусство.
Извините за занудство/придирки к словам, но робот — это именно машина для выполнения физических действий.

Ок. Договорились )

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

Согласен. Сейчас они еще сильно разные и где-то приходится самому исследователю заниматься feature engineering'ом, ггде-то подкручивать, потому что в лоб, оно очень долго работает.
Ключевой момент, что ядро алгоритмов для самых разнах задач построено одинаково. Значит, через какое-то время все сведется к одной сложной сети, в которой кол-во слоев будет регулироваться коэффициентами. Или из нескольких предварительных действий сразу будет строиться достаточно хорошая архитектура. А дальше — пристыковать адаптер и обучение конкретной задаче.

Но у меня рука не поднимется называть НС здесь «интеллектом» в любом смысле.

Определение «интеллекта» очень сложное, даже применительно к привычному естественному интеллекту. Тут можно очень долго спорить, что им называть, относить ли сюда рациональное поведение, рефлексию, творчество, память, способность к обработке информации и т.п.
Ключевая фишка в том, что удалось результативно смоделировать естественную нейросеть. То есть взять ряд очень простых одинаковых элементов, объединить их в достаточно простую структуру (сложную количественно, но не сложную качественно — в ней очень мало уникальных элементов и связей), дальше начать это оптимизировать и такие же не очень сложные алгоритмы оптимизации подобрали для нее оптимальные коэффициенты. И это дало хороший подтвержденный результат.
В сравнение с другими алгоритмами ML получается, что мы должны постоянно что-то для них придумывать, подбирать их: где-то лучше линейная регрессия, где-то svm, где-то решающие деревья, и пр. Заметьте, очень часто лучший результат показывают ансамбли или суперпозиции разных алгоритмов, потому что не все отдельный алгоритм хорошо обрабатывает. А не является ли эта суперпозиция некой предтечей нейросети из одного нейрона? Вот у вас вход, вот веса, вот выход? Каждый нейрон работает как маленький линейный регрессор. Функция активации — решающее дерево: превысили порог, не превысили. В итоге от россыпи алгоритмов мы переходим к одному обобщенному алгоритму, который хорошо адаптируется под разные ML-задачи.

Нейросетевая Эйфрория идет от сочетания этих вещей:
— блестящие успехи в отдельно взятых сильноразных областях
— качественная простота устройства
— универсальность
— похожесть на живую нейросеть
> который хорошо адаптируется под разные ML-задачи.
Так уж под все? А как быть, если у нас очень большая размерность задачи, и относительно мало обучающих примеров?
Или, скажем, есть много категориальных фич с большим числом значений (таким, чтобы было не выгодно переводить их в бинарные)?
«под разные ML-задачи» !== «под все»

ок?

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

Так же как и в других алгоритмах. В этой ситуации может переобучиться что угодно — от линейки до деревьев. Пытаемся найти максимально простое решение. Для этого вводим нормализацию.

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


блестящие успехи в отдельно взятых сильноразных областях

Они то действительно блестящие, никто не спорит, но блеск этот происходит вовсе (или скорее не только) из-за использования нейросетей.
Сюда (если за уши притягивать) все что угодно притянуть можно, вплоть до использования тех же version control, а именно git (mercurial, любимое подставить), которые например по сравнению с тем же столетним MS-VSS или cvs, в разы повысили возможность команды слаженно работать продуктивно над исходниками.
А современные IDE? А… да много чего еще.


Как мне кажется, и как уже многократно сказано, этот блеск стоит лучше отнести на счет алгоритмов, людей (комманды), проделанной ими работы, да много чего (хоть того же современного железа), но никак не инструмента ими используемого. Да, упомянуть естественно стоит, да сказать, что сильно облегчил работу, да — удобнее, да — с ними местами быстрее, чем без… Но восхвалять, возводить в превосходную степень, объявлять панацеей от всего и вся — нет, или как минимум еще очень и очень рано.


По мне (дальше утрирую если что) это сродни тому, как хвалить не плотника, который вам классно починил чего-нибудь, а петь дифирамбы его молотку...

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

Мы восхищаемся тому, какой классный инструмент придумал плотник, и даже дал нам его потрогать :))
Про разработчиков мне очень не понравился вопрос. Кодеров заменить ИИ сможет, и без особых проблем. Возможно я сильно ошибаюсь, но если задача описана (т.е. составлены списки допустимых входных данных и соответствующих им выходных данных), то при наличии такого массива информации, как гитхаб, технически это не большая проблема. Системы автоматического поиска уязвимостей уже продемонстрированы тем же МИТом, они именно этим занимаются — ищут комбинации входных параметров, приводящих к выхода алгоритма за спецификацию.
Вопрос должен быть другим — а кто составляет техническое задание на производство, ну, например, модуля? И вот тут наступает полный «оп-па». Выясняется, что никакой ИИ никогда (ну в обозримом будущем) ни на что такое не способен. Т.е. весь этот инструментарий из «ИИ» должен быть запрограммирован неким архитектором. Естественно это делается не на си и не на пайтоне. Но грамотно составленные функциональные требования автоматически в код конвертнуть, мне кажется, можно.
Так вот можно ли назвать такого архитектора «разработичком»?
Я вообще думаю, что все проблемы с софтом в том, что разработчики не могут достаточно быстро реализовать требования архитектора. В итоге заоблачно повышаются требования к квалификации архитектора и астрономически возрастает стоимость ошибки. Для меня вообще загадка, откуда работающий хоть как-то софт берется.

Я ненавижу слово — кодер. Для меня разработчик — это и "архитектор" и "программист" в одном лице.
Я таких видел конечно, но к счастью, очень мало и очень коротко. И разработчиком такого назвать у меня язык не повернется. Про скрипт-киддис и подобных, я умолчу пожалуй.


Если вам встречались только упомянутые вами "кодеры", тогда — все близко к тому как вы пишете, с разной степенью детализации.

А он им что сказал набить именно такой цикл… Где у вас граница "формалицации" проходит?

Кто он-то? Вопрос стоит четко: «Смогут ли ИИ в обозримом будующем заменить разработчика». Вы когда вакансию смотрите — «junior developer», вы понимаете примерно, на какую работу идете, или все еще не знаете — придется ли вам архитектуру программы разрабатывать, тест-кесы писать или код коммитить?
Мне кажется, что разработчика уже во многом начали заменять умным инструментарием, а в будущем заменят совсем. Будет просто визуальное построение архитектуры и запуск билда одной кнопкой. И результат через 12 часов, откатанный на автоматических стендах.

он — архитектор, им — разрабам...


и почему-то думается мне, вы ни тем, ни другим не являетесь.


А про кнопку нажать, я кажется где-то уже слышал… а вспомнил, то было про smalltalk, лет тридцать тому назад пророчили...

Для меня разработчик — это и «архитектор» и «программист» в одном лице.

он — архитектор, им — разрабам...

Чего доказать-то требуется? Что Сенька — дурак? Ну ок. Но зачем задавать вопросы, на которые не хочется слушать ответа никакого, кроме правильного, неясно
Языки уже эволюционировали — сначала надо было набивать биты тумблерами по полчаса, потом стали на языках низкого уровня писать, потом на языках высокого, на питоне сейчас вообще можно по-английски примерно кое-как писать и смотреть тут же что на выходе. Что, слабо написать «ИИ», который напишет функцию abs(int)?

Не, я вас услышал как раз. Мнение, как мнение… чего в бутылку то лезем?


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


Например. то что инструменты разраба становятся "богаче", не вызывает ни у кого никакого сомнения… Однако какого вы мешаете в кучу т.н. инструменты и способность логически мыслить, формализовывать, создать в конце концов, вызывает у меня кучу вопросов, наводя на определённые мысли… И только.

Так я про это и написал в самом первом комментарии — механическую работу разработчика и тестера можно заменить «ИИ» (не зря в кавычки беру), работу архитектора — нет.
Работу водителя автомобиля можно заменить ИИ. Работу маршрутизатора посылок для задачи следуюшего пункта следования ИИ-водителю — тоже. Работу по планированию вашего отпуска — вряд ли в обозримом будущем.
Иными словами — работу по целедостижению часто можно поручить роботу. Работу по целеполаганию — только на самом низшем уровне.

а я вам ответил, — плохие же вам встречались разрабы на вашем жизненном пути, раз вы про них-нас так…
Давайте пальцем тыкнем, раз пошла такая пьянка — вот есть в команде энжин-икс например такой VBart (чрезвычайно кстати мной уважаемый, и имхо по моему скромному мнению выдающийся розработчик) или архитектор таки? А не менее уажаемый isysoev в бытность свою разрабом nginx? И я таких знаю и из России и с "дальнего" зарубежья хренову тучу… Что их всех под одну гребёнку и ИИ заменить, хоть в кавычках хоть без? У меня тогда для вас плохие новости, — ибо Скайнет — это лучшее, что ждёт человечество в этом случае.


Кстати, тоже работаю в "крупной фирме" в Европах, как то они у нас не делятся на архитекторов и разрабов, сеньоры и юниоры — есть, проектлиды — есть (вот бы кого с удовольствием подменил ИИ, хотя бы некоторых), консальты — есть. Остальное — должности, т.е. тимлид например может быть кто угодно из вышеупомянутых, даже юниор, если у него команда молодая. Кто угодно есть (25.000 сотрудников), архитекторов — нет. И деления такого как вы подразумеваете (дискриминация какая-то), тоже — нет. Ни по факту, ни по содержанию… не задерживаются видно кодеры у нас.

>> Грубо говоря большинство классических нейросетей, существующих в настоящий момент, — есть классифицирующие функции… и выделяющих в итоге строго «запрограммированные» признаки.

Это скорее вопрос стадного мышления заказчиков задач, чем реальное ограничение нейросетей. Когда я в статье здесь на хабре предложил для оценки качества обобщений, сделанных нейросетью использовать не задачу классификации, а другую, гораздо более показательную в этой части, одним из самых частых комментариев по сути было «Как интересно, жаль, что вы решили не задачу классификации». Как только кто-то продемонстрировал заметный в прессе успех на какой-нибудь другой задаче, например, раскраска и стилизация картинок все стали считать это приемлемой задачей для сетей. Если завтра кто-то продемонстрирует успех в процессинге естественной речи на рекурентной нейросети я вас уверяю все бросятся рассказывать, что нейросети по самой своей природе и архитектуре приспособлены именно к этой задаче. И это будет правдой.

Про то, какие признаки распутываются, а какие нет и как заставить сеть смотреть как человек, я думаю задачи связанные. Автоэнкодеры нам в помощь. Когда мощь автожэнкодеров сети будет соответствовать понятийной базе типичного человека, вполне возможно, что сеть начнёт смотреть как человек. Я не говорю, что это будет прямо завтра, но то что википедия используется как типичный источник трейновых выборок говорит, что данные для такого обучения как минимум существуют.
Я для себя это сформулировал так: «Обучение заканчивается, когда обучаемый и обучающий одинаково понимают условие задачи».
Отсюда вытекает отсутствие в вашем опроснике подходящих для меня вариантов ответов.
Вместо: являются одним из многих инструментов, я бы поставил крыжик на являются новой парадигмой программирования. Примерно как ООП во времена Smaltalk. Это всё же больше чем просто инструмент.
Вместо: могут самостоятельно перестраивать собственную логику и алгоритм работы, я бы сказал, что могут самостоятельно начинать оптимизировать совсем не те параметры, оптимизацию которых от них ожидал создатель.
Вместо Смогут ли заменить, я бы сказал, что разработчиков как таковых станет на много меньше, и гораздо больше людей с квалификацией «Тренер ИИ», людей которые будут брать Microsoft Intelegent, например, и составлять учебные выборки для него и настраивать метапараметры ни разу не увидив при этом ни строчки кода, максимум – увидев блоксхему получающейся сети. То есть сделаю то же самое что прогресс готовых инструментов сделал с программистами, умеющими оптимизировать байтики. Их мало, мы их все уважаем, они сидят в тишине и пилят драйвера и ядра. А простые смертные заняты уже совсем другим. Интерфейсики плодят миллионами, на половину в графических средах.
Касательно «Тренер ИИ»: похожие вещи сейчас и происходят. Правда, набираются не именно тренеры, а «генераторы» данных — эксперты, способные создавать и размечать данные для обучения.

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

Браво!


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


Про "Тренеров ИИ" согласен только в том случае, если вы разрабов оставите в покое :)
Потому как они, имхо, ортагональны. Например Си и asm (пусть и x86) сосушествуют себе вполне с теми же C++, Java и компания. И разработчики под них неплохо живут (а где ваш смалтак был когда их создали?)

NN потенциально может решить любую узкую задачу лучше человека, я считаю. То что дилетанты любят рассуждать о вещах в которых не разбираются, по моему вообще к теме слабо относится.


Будет ли сильный AI основан на NN? Возможно. Появится ли он в ближайшее время? 50 лет кажется реалистичной оценкой.

> ну так и калькулятор может например возвести в степень в миллионы раз быстрее человека
А мне больше нравится сравнение прочитанное давно в книге про ИИ, что человек неправильно себе представляет ИИ — пытается создать подобие человека(эти куча тестов на чат-бота, слова которого не отличить от человека), а сравнение такое:
В прошлом, человек хотел научиться летать, и пытался изучать птиц, и имитировать их поведение — приделывал крылья, махал ими наблюдал за птицами. И лишь когда человек начал изучать аэродинамику — он наконец смог взлететь, используя совершенно другие принципы. Так и с ИИ: ненужно создавать ИИ по образу и подобию человека. Цель ИИ — это максимальная рационализация в решениях. Там, где человек будет думать чувствами — система должна будет использовать рациональный подход, превосходящий любое решение человека. Это и есть самая высшая цель ИИ — быть максимально рациональной системой, выше человеческого понимания.

Жутко стало и холодом повеяло и почему то кадры с механической ногой, идущей по человеческим черепам...

А как этот самый ИИ вообще будет хотеть что-то делать, если у него нет чувств?

В простейшем виде «желание делать» можно запрограммировать так: «если мне есть что делать, то я это делаю, если нечего — анализирую информацию с сенсоров».
Товарищи, не хочу никого пугать, но…

Что есть способность к анализу? Интуиция и мышление? Сознание? Самосознание? Философия? Почему мы не можем ответить на этот вопрос? Почему мы его избегаем и лучшие умы нашего времени либо переводят стрелки на философов, либо скупо отвечают про какие-то митохондрии и квантовые суперпозиции, либо банально заявляют, что понятия не имеют. Так почему? Грёбанная рефлексия! Как вообще так произошло, что мозг в черепной коробке спрашивает, почему он мозг в черепной коробке?

Есть у меня *смутное* подозрение, что всё намного проще. Да, процессы сложны и на взвешенный сумматор они явно не претендуют. Но… Что, если добавить нелинейных процессов? Что, если вывести объёмы до овер девять тысяч? Что, если прикрутить этому руки-ноги? Что, если всё просто, но мы не хотим, не можем или банально боимся это понять? Что, если вся эта тягомотина со свободой разума есть не более чем миф, иллюзия?

Не так давно искусственный интеллект обыграл общепризнанно одного из сильнейших игроков го. Замечу, что эта игра требует принятия решений в условиях недостаточных данных. Программисты наколдовали? Не думаю. Нейросети лишь инструмент, да. Но мы им пользуемся ежедневно, с незапамятных времён. Наши предки ими пользовались, предки наших предков ими пользовались.
Собственно. На секунду представьте такую картину. Берём одну нейросеть. Допустим, она будет обрабатывать изображения. Что на выходе? Да невесть что, что-нибудь поскромнее пары гигабит в секунду. Она хранит текущее состояние — кратковременную память. Вывод отправляем дальше по дорсальным и вентральным путям, которые проходят по коре нашей нейросети постепенно растворяясь в ней. Таким образом поступаем со всеми органами чувств. Кору нейросети выделяем как некий имитатор «самосознания», которая будет принимать «решения». В неё проецируются все органы чувств, вся память, весь опыт, вся жизнь, вся суть. Зашиваем «стандартные» веса, получая инстинкты. И готово.

Сколько видеокарт должны поистине гореть, чтобы это всё заработало? Мы тут недавно научились строить рекурсивные слои, у нас такое само собой повсюду и везде. Так что овер 9000 думаю весьма оптимистичная оценка. Но на мой взгляд, даже сегодня такое теоретически возможно. Может, потребуется пара десятков лет на то, чтобы подобрать научить такую нейросеть «инстинктам», но на нашей планете достаточно видеокарт, чтобы она хоть как-то работала.

К слову, про «хоть как-то». Наш мозг потребляет 20% всего энергетического метаболизма. Это пол киловат*часа в сутки. Чёрт, да одна моя видеокарта за одну игровую сессию больше сжигает. Так что с энергетической точки зрения это вряд ли будет быстро. По поводу быстродействия, здесь много зависит, конечно, от реализации. Но большое количество видеокарт, которые скорее всего будут ещё в разных слейвах, потребует огромных накладных расходов на мемори шаринг. Так тут ещё и состояние скорее всего придётся распределять. А информационные массивы колоссальны, они поистине огромны. Так что придётся недюже потрудиться, чтобы каким-то раком заставить это хотя бы работать. Быстродействие будет далеко не в приоритете. И оно будет печально. Пара гигабит в секунду (если не пара десятков) с каждого органа чувств, ещё столько же на внутренние процессы, ещё столько же на хранение данных (у нас память, по всей видимости, темпоральная, то есть она существует во времени), если не на порядок больше. В общем, скорее всего мы обосрёмся не в вычислительных ресурсах, а в пропускных способностях. Дробить умеем много, подавать столько не получается. Как всегда, в общем. Так что придётся использовать простаивающие вычислительные мощности для пережатия данных. Может бесполезно, а может и не очень, всё равно простаивают. Но одно точно — такая система будет работать. Может хорошо, может не очень, но она будет работать и мы сможем её реализовать.

А теперь, вопрос на миллион — ну на кой чёрт она (эта система) тут сдалась? Какому сумрачному гению потребуется переводить тонны нефти (в прямом смысле) на то, чтобы родить бесполезного ребёнка, который ещё пару веков (вспоминаем производительность) будет только обучаться? Да и чему? Если он будет мыслить и рассуждать подобно нам, зачем нам ещё один из нас, если можно, простите, просто потрахаться? Чем многие из нас и так увлекаются без весомых на то причин не сильно утруждая себя контрацепцией. У нас и без того сложная ситуация с трудоустройством, зачем ещё одни лишние руки? Кому надо вкладывать многие миллионы на то, чтобы через десяток лет (может чуть быстрее, а может дольше, тут зависит от нас и истинного состояния сферы) получить наглядное подтверждение возможности создания ИИ.

Ответ, почему «до сих пор не изобрели ИИ» очень и очень прозаичен — он никому за даром не сдался. А тут ещё надо взять, да выложить пару чемоданов. Нет, гугл делает небольшие узкоспециализированные подобия нас потому, что они лишены наших недостатков — они отлично делают то, ради чего созданы и совсем не делают другое. Но теоретическая возможность сшить несколько сотен таких узкоспециализированных подобий в одно — существует. И странно, некоторых удивляет тот факт, что это действительно будет очень похоже на нас.

Впрочем, если закон Мура не перестанет радовать, то через пол века мозг должен будет умещаться в одном SoC. Но это лирика. И прошу прощения, что выдал сей опус. Не удержался. И да, есть вероятность, что я не прав. Но она мала.
А теперь, вопрос на миллион — ну на кой чёрт она (эта система) тут сдалась? Какому сумрачному гению потребуется переводить тонны нефти (в прямом смысле) на то, чтобы родить бесполезного ребёнка, который ещё пару веков (вспоминаем производительность) будет только обучаться? Да и чему? Если он будет мыслить и рассуждать подобно нам, зачем нам ещё один из нас, если можно, простите, просто потрахаться? Чем многие из нас и так увлекаются без весомых на то причин не сильно утруждая себя контрацепцией. У нас и без того сложная ситуация с трудоустройством, зачем ещё одни лишние руки? Кому надо вкладывать многие миллионы на то, чтобы через десяток лет (может чуть быстрее, а может дольше, тут зависит от нас и истинного состояния сферы) получить наглядное подтверждение возможности создания ИИ.


Затем чтобы изучить и улучшить. Про трудоустройство — наоборот, будет возможность не работать, но получать блага цивилизации (еду, вещи), потому что роботы с нейронками будут производить это всё. Производительность рано или поздно вырастет, прогресс не стоит на месте. Уже сейчас прорыв в нейронках многие приписывают в том числе улучшению производительности видеокарт. Так же постепенно появляются устройства конкретно заточенные для задач ИИ.
Не всё можно улучшить в том плане, что стоимость улучшения будет много-много выше значимости. Про «не работать» — это вы лихо завернули. Лет через 100 — может быть, но на пособие мало кто будет мечтать жить. А придётся многим. Так что, ничего хорошего не будет.
Т.е. что касается интеллекта, принципиальная разница чем нейронная сеть отличается от какого либо алгоритма (и это же одно из главных преимуществ ее) — она в состоянии улучшать результат на основании прошлого опыта (я утрирую, но речь здесь об интеллекте, не будем здесь собственно про коннективизм, нейроны, сигналы, веса и т.п.).

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

Вот всегда была интересна мотивация фантастов. Зачем это ИИ? Можно же не палиться и дружить с человеками. Для того чтобы эксплуатировать «обслуживающий персонал» необязательно его порабощать.

Возможно так "логичней" с точки зрения железки… (т.е. иначе человеку лень эксплуатироватся, иначе он опять же — царь джунглей, т.е. теоретически может перепрошить или просто отключить железяку, что с ее точки зрения абсолютно неприемлемо и т.п. в том же ключе, вплоть до "сдвига по фазе" на почве контроля всего и вся)

UFO just landed and posted this here

Так оно уже самообучается у нас иль нет? Опять же логическое мышление и т.д.


  1. Потому как если да — оно перерастает уже в нечто большее, у которого и инстинкт самосохранения на раз вырастает.
  2. С чего вы решили, что это единственная логическая цепочка, в которой "свободное человечество" вдруг мешает ИИ? Их тысячи таких цепочек… (вплоть до вышеозвученного "сдвига по фазе" на почве контроля всего и вся, где "свободный человек" — помеха)
UFO just landed and posted this here
UFO just landed and posted this here
Автономный глобальный терминатор, если и будет, то не на нейронных сетях и вообще не в рамках машины Тьюринга. По крайней мере, если мы не деградируем. ИИ это как обезьяна с пистолетом — вроде грозно, может нагадить, но реальную войну вести не способна.
Такой же опрос, размещенный под текстом про победу компьютера в го, показал бы совсем другие результаты.
никакой романтики, думаю таких как вы заменят в первую очередь

Не переживайте так за меня, даст бог, на мой век хватит… Да и на пенсию я себе уже счас худо-бедно заработал (нет на Бора-Бора еще не хватит, но я над этим работаю).


ПС. думаю, что хабр уже и правда не тот, раз такие как вы — здесь...

да хоть от рождества христова, по сути есть что сказать? нет? — лесом!

ну что же вы так вот сразу — лесом, грубо же
Sign up to leave a comment.

Articles