software 2.0
Dec. 1st, 2017 09:29 amАндрей Карпати, известный специалист в области глубокого обучения, написал небольшую заметку 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."
Именно этот недостаток вызывает в последние годы опасения некоторых исследователей насчет опасности того, что более глубокие знания и понимания их конкретных областей сменяются на, иронически говоря, более поверхностное использование глубоких нейронных сетей, которое дает лучшие практические результаты, но тормозит теоретическое понимание темы.
Карпати пишет, что новое поколение нейронных сетей, которое совершило и продолжает совершать гигантский рывок по своим возможностям с 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."
Именно этот недостаток вызывает в последние годы опасения некоторых исследователей насчет опасности того, что более глубокие знания и понимания их конкретных областей сменяются на, иронически говоря, более поверхностное использование глубоких нейронных сетей, которое дает лучшие практические результаты, но тормозит теоретическое понимание темы.
no subject
Date: 2017-12-01 02:43 pm (UTC)Этот вопрос уже поднимался и где аналитические методы сменялись компьютерным моделированием при помощи Software 1.0. И в этом смысле Software 2.0 менее опасна чем Software 1.0, поскольку в большей степени избегает вкладывания интерпретации в самом начале, и более похоже просто на сбор данных, чем собственно наш мозг на первой стадии познания и занимается
no subject
Date: 2017-12-01 02:48 pm (UTC)Чтение предмета по потрохам нейронных сетей.
no subject
Date: 2017-12-01 03:11 pm (UTC)Что-то это мне напоминает конец XVI века, когда модель солнечной системы Коперника, более простая содержательно, давала худшие предсказания положения планет на небосводе чем модель Птолемея с хитровывернутыми эпициклами.
Или борьбу фиксистов с мобилистами в геологии, завершившуюся уже на моей памяти.
То есть ситуация когда эмпирическая модель, которая нас не приближает к пониманию устройства мира дает лучшее согласие с экспериментом, чем модель которая понятна - далеко не новость в истории науки.
no subject
Date: 2017-12-01 03:32 pm (UTC)no subject
Date: 2017-12-01 04:26 pm (UTC)(шутка. По крайней мере пока у нас нет AGI - шутка)
no subject
Date: 2017-12-01 08:31 pm (UTC)Сначала возникают нейронные сети.
Потом они осваивают речь, линейный дискурс, аристотелеву логику, системы логического вывода и прочую теорему Гёделя.
Потом они пишут линейные, чёткие и логичные программы.
Потом делают (в том числе с помощью этих программ) нейронную сеть.
Которую потом долго и мучительно обучают линейному дискурсу, чтобы она логически выводила теории.
no subject
Date: 2017-12-01 04:35 pm (UTC)(я каску нашел)
no subject
Date: 2017-12-01 05:28 pm (UTC)no subject
Date: 2017-12-01 05:37 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2017-12-01 06:05 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2017-12-02 10:11 pm (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2017-12-01 08:57 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2017-12-02 11:59 am (UTC)Ну, а в третьих, насколько я понимаю, сети можно тренировать и с учетом устойчивости к подобным штукам. То есть сеть за счет дополнительного вклада ресурсов может быть сделана куда более робастной, если это действительно надо.
(no subject)
From:no subject
Date: 2017-12-01 05:52 pm (UTC)no subject
Date: 2017-12-01 05:58 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2017-12-05 10:57 am (UTC) - Expand(no subject)
From:(no subject)
From: (Anonymous) - Date: 2017-12-12 03:27 pm (UTC) - Expand(no subject)
From:no subject
Date: 2017-12-01 09:45 pm (UTC)no subject
Date: 2017-12-01 09:47 pm (UTC)Интересно, скоро ИИ натаскают на решение проблем Смейла?
no subject
Date: 2017-12-01 11:09 pm (UTC)Или как в новой книге Пелевина - писать романы о том как решить проблему.
no subject
Date: 2017-12-02 09:22 am (UTC)Физики, например, не удовлетворятся "идеальным предсказателем", им нужно понимание. Потому что понимание даёт возможность решать более широкий класс задач: не только "каким будет результат этого эксперимента?", но и "какую установку нужно построить для получения нужного результата?" и "возможно ли получение такого результата какой-либо установкой?".
Понимание принципов действия лекарств в медицине помогает не только вылечить больного (это можно и без понимания, и даже с большей эффективностью), но и сократить количество экспериментов и придумать новые лекарства.
Отсутствие понимания может привести к нежелательным последствиям в долгосрочной перспективе, ведь "software 2.0" не может это учитывать. Например, если ориентироваться исключительно на спрос на продукты питания без понимания причин этого спроса, то постепенно скатимся на наркотики. Если оценивать лишь привлекательность самолёта, то будут авиакатастрофы. Если оценивать популярность искусства, то оно перестанет быть искусством. Если оценивать коммерческую выгоду, будет исчерпание полезных ископаемых и загрязнение окружающей среды.
Собственно, некоторые их этих тенденций уже и так есть, но часто их пытаются предотвратить законодательно. Если не будет понимания механизмов, то будет невозможно и противодействовать нежелательным тенденциям.
no subject
Date: 2017-12-02 09:53 am (UTC)no subject
Date: 2017-12-02 10:02 am (UTC)no subject
Date: 2017-12-02 10:19 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2017-12-02 09:07 pm (UTC)RCP («random code programming») – это близкое по идеологии, но совершенно иное по целям и результатам направление в программировании. Здесь мы генерируем не случайные комбинации входных данных, а случайные последовательности самого программного кода. А потом прикладываем к этому коду принципы «exhaustive testing».
Это как с обезьяной, способной за миллион лет настучать на машинке «Войну и мир» – только в случае с RCP мы отводим миллиард лет, делаем обезьяне серьезный оверклок воткнутым в задницу высоковольтным проводом – и ожидаем, что она напишет нам не «Войну и мир», а программу, способную написать «Войну и мир».
Качество задачи меняется – поэтому нужна очень высокая производительность и большие объемы памяти. Сегодня с этим проблем нет: мощности избыточны. Достаточно задать требования к выходным секвенциям, и мы рано или поздно получим программу, которая будет делать то, что нам угодно.
Мы, правда, не будем знать, как именно она работает – и в этом главная издержка метода.
Процесс можно разбить на любое требуемое количество уровней – и, главное, заставить его самоорганизовываться со все большей и большей сложностью. Это существенно, потому что после какого-то момента от человеческого вмешательства все равно будет мало толку.
Формирование случайного кода похоже на эволюцию первичной протоклетки в высших позвоночных – только ускоренную в миллиарды раз. Разница в том, что количество порождаемых случайным кодом тупиков и уродцев будет куда больше, чем может себе позволить природа.
Это как семечко волшебной фасоли – его достаточно посадить в землю в полнолуние, и оно начинает расти, бешено делясь на сотни и тысячи рвущихся к небу побегов. Скручиваясь, эти побеги образуют огромную спиральную колонну – и та в конце концов доходит до неба. RCP-фасоль растет во все стороны сразу, но мы отбираем из этой безмерности только нужный нам мост к облакам.
Сравнение с семенем, пожалуй, самое удачное – технология random code позволяет вырастить безобразное, избыточное, безумное, корявое, нелепое – но плодоносящее дерево. Достаточно знать, куда и как посадить семечко.
Пелевин, iPhuck 10
no subject
Date: 2017-12-03 11:54 am (UTC)no subject
Date: 2017-12-03 01:51 am (UTC)no subject
Date: 2017-12-03 11:33 am (UTC)https://arxiv.org/abs/1602.04938
no subject
Date: 2017-12-03 07:35 pm (UTC)no subject
Date: 2017-12-13 08:01 pm (UTC)