? ?
Ни о какой безапелляционности в моих высказываниях не может быть и речи! [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

software 2.0 [дек. 1, 2017|09:29 am]
Anatoly Vorobey
[Tags|]

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

Карпати пишет, что новое поколение нейронных сетей, которое совершило и продолжает совершать гигантский рывок по своим возможностям с 2012 года, можно считать не столько полезной техникой, сколько новым видом программирование. В отличие от обычного программирования, Software 1.0, в котором программист дает компьютеру точную и обычно весьма сложную по своей иерархии последовательность инструкций (алгоритм), в Software 2.0 мы начинаем с многочисленных примеров того, как наша программа должна себя вести, а потом находим "программу" (являющуюся по сути набором весов для всех узлов нейронной сети) в виде достаточно хорошего приближения к этой цели. Конечно, далеко не все задачи поддаются такому способу решения, по крайней мере сейчас, но, как пишет Карпати,

"It turns out that a large portion of real-world problems have the property that it is significantly easier to collect the data than to explicitly write the program."

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

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

"Across many applications areas, we’ll be left with a choice of using a 90% accurate model we understand, or 99% accurate model we don’t."

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

Comments:
Страница 1 из 2
<<[1] [2] >>
From: dmpogo
2017-12-01 02:43 pm
Именно этот недостаток вызывает в последние годы опасения некоторых исследователей насчет опасности того, что более глубокие знания и понимания их конкретных областей сменяются на, иронически говоря, более поверхностное использование глубоких нейронных сетей, которое дает лучшие практические результаты, но тормозит теоретическое понимание темы.

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

Edited at 2017-12-01 15:18 (UTC)
(Ответить) (Thread)
[User Picture]From: muh2
2017-12-01 02:48 pm
Есть шанс, что разовьется компьютерная нейрология из которой будут черпать тематические знания.

Чтение предмета по потрохам нейронных сетей.
(Ответить) (Thread)
[User Picture]From: vitus_wagner
2017-12-01 03:11 pm
> "Across many applications areas, we’ll be left with a choice of using a 90% accurate model we understand, or 99% accurate model we don’t."


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

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

То есть ситуация когда эмпирическая модель, которая нас не приближает к пониманию устройства мира дает лучшее согласие с экспериментом, чем модель которая понятна - далеко не новость в истории науки.
(Ответить) (Thread)
[User Picture]From: dims12
2017-12-01 03:32 pm
"Программирование", ИМХО, это выбор гиперпараметров и, в первую очередь, топологии сети. А подбор весов -- это уже исполнение программы.
(Ответить) (Thread)
[User Picture]From: sunch
2017-12-01 04:26 pm
Делов-то - загрузить в машину примеры проблем, где у нас есть глубокое теоретическое понимание темы, и пусть выводит нам с 99% точностью новые понимания!

(шутка. По крайней мере пока у нас нет AGI - шутка)
(Ответить) (Thread)
[User Picture]From: livelight
2017-12-01 08:31 pm
Забавный был бы вираж эволюции.
Сначала возникают нейронные сети.
Потом они осваивают речь, линейный дискурс, аристотелеву логику, системы логического вывода и прочую теорему Гёделя.
Потом они пишут линейные, чёткие и логичные программы.
Потом делают (в том числе с помощью этих программ) нейронную сеть.
Которую потом долго и мучительно обучают линейному дискурсу, чтобы она логически выводила теории.
(Ответить) (Parent) (Thread)
[User Picture]From: spamsink
2017-12-01 05:28 pm
Пока software 2.0 не станет устойчиво к adversarial examples, оно будет годно преимущественно (или только) для игрушек.
(Ответить) (Thread)
From: (Anonymous)
2017-12-01 05:37 pm
Ой ну прямо. Вот возьмите свой, прямо скажем, мозг. Он что, устойчив к adversarial examples? Хрена лысого он устойчив, любая оптическая иллюзия тому примером, тысячи их. Однако как-то справляется же (я надеюсь).
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: ninazino
2017-12-01 05:52 pm
Распознавание речи, например, вообще невозможно более-менее адекватно запрограммировать, уже очень давно использовались Hidden Markov Models, которые тоже обучались, а не «программировались», и ничего. Сейчас, с нейронными сетями, распознавание переживает бум, и никого не волнует тот факт, что веса нейронам приписываются не вручную:))
(Ответить) (Thread)
[User Picture]From: ninazino
2017-12-01 05:58 pm
ЗЫ: по поводу «знания» как основы эффективного программирования распознавания речи ходит апокрифическая байка, что Йелинек якобы говорил: аккуратность распознавания вырастает всякий раз, когда я уволю парочку лингвистов.:))
(Ответить) (Parent) (Thread)
[User Picture]From: mr_k_bx
2017-12-01 09:45 pm
Да.
(Ответить) (Thread)
[User Picture]From: jmyshanya
2017-12-01 09:47 pm

Интересно, скоро ИИ натаскают на решение проблем Смейла?

(Ответить) (Thread)
[User Picture]From: darth_mozg
2017-12-01 11:09 pm
Как метод решения этой проблемы - будем учить "Software 2.0" не решать проблему, а учить "Software 2.0" учить нас решать проблему.
Или как в новой книге Пелевина - писать романы о том как решить проблему.
(Ответить) (Thread)
[User Picture]From: gul_kiev
2017-12-02 09:22 am
Видимо, это будут два разных направления: строить модели и понимать их.

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

Отсутствие понимания может привести к нежелательным последствиям в долгосрочной перспективе, ведь "software 2.0" не может это учитывать. Например, если ориентироваться исключительно на спрос на продукты питания без понимания причин этого спроса, то постепенно скатимся на наркотики. Если оценивать лишь привлекательность самолёта, то будут авиакатастрофы. Если оценивать популярность искусства, то оно перестанет быть искусством. Если оценивать коммерческую выгоду, будет исчерпание полезных ископаемых и загрязнение окружающей среды.
Собственно, некоторые их этих тенденций уже и так есть, но часто их пытаются предотвратить законодательно. Если не будет понимания механизмов, то будет невозможно и противодействовать нежелательным тенденциям.
(Ответить) (Thread)
[User Picture]From: mfi
2017-12-02 09:53 am
В вопросе - ответ. Именно медицина. Основная цель - лечить. Не понимаем, но лечит - используем. Что никак не отменяет теорий, позволяющих двигаться дальше. Софтостроительство - инжинерия. Работает - берем. Нашли нормальные алгоритмы - тоже в дело.
(Ответить) (Thread)
[User Picture]From: yalexey
2017-12-02 10:02 am
Человек намеренно игнорирует функциональное программирование?
(Ответить) (Thread)
[User Picture]From: avva
2017-12-02 10:19 am
Не очень понимаю, при чем тут оно, если честно.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: unterboa
2017-12-02 09:07 pm
BET, или «bounded exhaustive testing» – это метод тестирования компьютерных систем. Через них прогоняют все возможные комбинации входных данных (понятно, меньше какой-то заданной размерности, иначе процедура не кончится никогда). Такой способ поиска багов глуповат, но надежен. Он требует избыточных мощностей и приучает не экономить ресурсы.
RCP («random code programming») – это близкое по идеологии, но совершенно иное по целям и результатам направление в программировании. Здесь мы генерируем не случайные комбинации входных данных, а случайные последовательности самого программного кода. А потом прикладываем к этому коду принципы «exhaustive testing».
Это как с обезьяной, способной за миллион лет настучать на машинке «Войну и мир» – только в случае с RCP мы отводим миллиард лет, делаем обезьяне серьезный оверклок воткнутым в задницу высоковольтным проводом – и ожидаем, что она напишет нам не «Войну и мир», а программу, способную написать «Войну и мир».
Качество задачи меняется – поэтому нужна очень высокая производительность и большие объемы памяти. Сегодня с этим проблем нет: мощности избыточны. Достаточно задать требования к выходным секвенциям, и мы рано или поздно получим программу, которая будет делать то, что нам угодно.
Мы, правда, не будем знать, как именно она работает – и в этом главная издержка метода.
Процесс можно разбить на любое требуемое количество уровней – и, главное, заставить его самоорганизовываться со все большей и большей сложностью. Это существенно, потому что после какого-то момента от человеческого вмешательства все равно будет мало толку.
Формирование случайного кода похоже на эволюцию первичной протоклетки в высших позвоночных – только ускоренную в миллиарды раз. Разница в том, что количество порождаемых случайным кодом тупиков и уродцев будет куда больше, чем может себе позволить природа.
Это как семечко волшебной фасоли – его достаточно посадить в землю в полнолуние, и оно начинает расти, бешено делясь на сотни и тысячи рвущихся к небу побегов. Скручиваясь, эти побеги образуют огромную спиральную колонну – и та в конце концов доходит до неба. RCP-фасоль растет во все стороны сразу, но мы отбираем из этой безмерности только нужный нам мост к облакам.
Сравнение с семенем, пожалуй, самое удачное – технология random code позволяет вырастить безобразное, избыточное, безумное, корявое, нелепое – но плодоносящее дерево. Достаточно знать, куда и как посадить семечко.


Пелевин, iPhuck 10
(Ответить) (Thread)
[User Picture]From: urod
2017-12-03 11:54 am
Я как-то пытался методом simulated annealing создать программу, которая выдаёт простые числа. Для тренировки они получали первые 10 простых чисел, но сколько они ни эволюционировали, 11-е простое число не находили. По крайней мере за те несколько минут, что у меня хватило терпения ждать.
(Ответить) (Parent) (Thread)
[User Picture]From: serezha
2017-12-03 01:51 am
оверлорды, оверлорды, а я маленький такой...
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>