Как стать автором
Обновить

Комментарии 29

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

ps
НС хороши только в задачах нечеткой классификации.
Я от всего этого далек, но раз годы эволюции смогли построить что-то поверх нейронной сети, то в принципе и инженеры смогут рано или поздно, надо просто дать им немного больше времени. У эволюции его вона скока было :) Ну а заодно они могут избавиться от неэффективности и бажности. Хотя, зачем строить, если можно взять классический компьютер для обработки алгоритмических задач и добавить туда НС для неалгоритмизируемых и трудноалгоритмизируемых, что, собственно, многие и делают, насколько мне известно (например, в OCR). Но мы сейчас куда-то отклонились от изначально заданного мной вопроса, ответ на который мне по-прежнему интересен: какое «железо» и какие энергозатраты нужны для функционирования нейросети, способной справиться с задачей, описанной в статье? Не зря же гугл отказался от использования НС? Где-то существуют подобные рассчеты?
В соседней ветке обсуждения добрались таки до ответа.
Думаю, что если даже самому внимательному человеку дать отсортировать массив из миллиона элементов вручную, он хоть раз ошибется. Вполне возможно, это как-то связано с ошибками при использовании НС для таких задач.
Зачем этот текст был написан, кроме как для «преодоления» песочницы Хабра? Вообще рассуждения «вилами на воде» от человека, который видимо ничего не понимает в нейронных сетях.
Как у нас говорили: «Идите, поручик, и застрелитесь! С этим позором жить нельзя!»
Всего 2 вопроса:

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

2. Какова стоимость такого чипа (комплекта) по сравнению с цифровой системой управления (включая стоимость всех «избыточных» датчиков этой цифровой системы)?
1. Существует ли в настоящее время чип (или комплект чипов), аппаратно (программная реализация системы такой сложности — это из области ненаучной фантастики) реализующий нейросеть
Вы, наверное, имеете ввиду реализацию всего функционала нейронного мозга? О такой реализации, в настоящее время, я не в курсе. Но, для управления автомобилем, такой сложной конструкции не требуется. Аппаратно нейронная сеть реализована на плате с использованием FPGA. Эта плата установлена на машинке, фото в верху. Вполне подходит для управления передвижной техники.
2. Какова стоимость такого чипа (комплекта) по сравнению с цифровой системой управления (включая стоимость всех «избыточных» датчиков этой цифровой системы)? :
По нашим предварительным расчётам не больше 100 000 — 150 000 руб. В разы дешевле.
Как эта машинка работает? Какой тип сети используется? Какой алгоритм обучения? Какие данные на входе и какие на выходе?
Я всего лишь имею в виду многослойный перцептрон на нелинейных «нейронах» (многослойная нейросеть на линейных элементах не имеет смыла, т.к. полностью эквивалентна однослойной).

Вы осознаёте, что для управления автомобилем нейронная сеть должна уметь выделять полотно дороги, дорожную разметку, дорожные знаки, светофоры, людей и машины на дороге и около неё (не только наличие, но и направление, и скорость их движения), сигнальные огни на автомобилях и даже жесты полицейских-регулировщиков? И что всё это должно работать в реальном времени? Что относительная скорость объекта, на который придётся реагировать, может превышать 250 км/час?

Извините, но заявления о том, что с этим справится эмулятор, реализованный на ПЛИС'е — это абсолютная недооценка сложности задачи.

Давайте подсчитаем. Предположим у нас монохромная видеокамера на 1.2 мегапиксела (это на два порядка меньше, чем палочек на сетчатке человеческого глаза и для реальной системы абсолютно недостаточно, но вполне достаточно для опровержения Ваших расчётов). даже если предположить, что нам удалось сжать сигнал настолько же эффективно (примерно в 120 раз; интересно, каким образом Вы это сможете сделать?), как это делает человеческий глаз, то понадобится 10000 (десять тысяч!!!) нейронов во входном слое сети. На два глаза (стереоскопичность зрения для автомобиля обязательна) потребуется 20000 нейронов.

Предположим, у нас примитивнейшая трёхслойная сеть сеть со связью между соседними слоями «все со всеми», без обратных связей и без связей внутри слоя. Между двумя соседними слоями понадобится 200002=4·108 связей.

Итак, получаем 20000 нелинейных функций от одного аргумента (нейроны первого слоя сети), 40000 нелинейных функций от 4·108 аргументов каждая (нейроны второго и третьего слоя сети) и 8·108 переменных для передачи информации между слоями.

Даже если в результате обучения 99% связей будет выкинуто, то у функций будет «только» по 4·106 параметров, а переменных останется «всего» 8·106.

НЕРЕАЛЬНО!!!

Даже если нейронная сеть, которой Вы попытаетесь решить задачу, будет намного проще (и значит, вероятность ошибки будет намного выше) — всё равно нереально! Ни одна ПЛИС такой объём вычислений в реальном времени произвести не сможет.

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

После обучения (при ранее указанных допущениях) останется: те же 20000 независимых нелинейных функций от одного аргумента, 40000 независимых нелинейных функций от 200 аргументов каждая и те же 40000 переменных.

Хрен редьки не слаще… НЕ РЕАЛЬНО!!!.
Да проблема даже не в вычислительной мощности, а в точности распознавания. Если решающая функция не совсем топорная (например, «слева больше светлых пикселей, чем справа, значит дорога уходит туда»), то для её моделирования нужна сильно нелинейная функция, т.е., в контексте нейронок, глубокая сеть. А глубокая сеть по-умолчанию склонна к переобучению, и это надо как-то решать. Хинтон вот предложил обучать её послойно, после каждого слоя вручную проверяя эффективность трансформированных входных сигналов. Если мы говорим про изображения, то наверняка понадобится дополнительно ещё 1-2 свёрточных слоя, чтобы солнце в верхнем правом углу не коррелировало с велосепидистом в левом стекле заднего вида. В итоге получаются такие монстры из 7-9 слоёв, тщательно спроектированные и выверенные на каждом слоё, и обученные в кластерах по тысяче машин. И это только для базового понимания изображения, а для автоматического управления дополнительно нужно учитывать показания датчиков, правила дорожного движения, общую обстановку на дороге, и уметь на основании всего этого принимать решения, обеспечивающие безопасность пассажира. И вот для этого уже не только докторскую степень в математических методах и статистике иметь надо, но и вложить нереальное количество человекочасов и денег на исследования, эксперименты и разработку.
Такой объём вычислений, нереально. Согласен. А нужен ли нам такой объём данных и для чего? Я приводил сравнение по входной информацией, которую используют гугл и человеческий мозг. Для гугл это 1 ГБ_сек., для мозга человека – 0.40МБ/сек. Задайте себе вопрос, почему так? Если говорить о мощности человеческого мозга, то, да, современные вычислительные компьютеры до сих пор отстают по этому показателю. Приводя в пример мощность мозга, следует учитывать то обстоятельство, что эта мощность складывается при условии задействия одномоментно всех нейронов и нейронных связей. Вы можете представить ситуацию, когда сигнал проходит сразу по всем нейронам через все нейронные связи. Мне даже сложно себе представить, что будет с человеком. В любой житейской ситуации, для «обработки» входной информации задействованы определённые группы нейронов. Но никак не весь мозг. На этой машинке используется НС с 1 200 000 нейронных связей. Количество ситуаций, которые система сможет распознать (идентифицировать) и отреагировать так, как её этому обучили, равно 255 в 1 200 000 степени. Много это или мало для автопилота на дороге, покажет практика. Тем более, что мы исходили из того, что на автопилоте следует использовать НС помощнее, с 16 588 800 нейронными связями. Тогда число ситуаций, которые система сможет распознать увеличится до 255 в 16 588 800 степени. Для этих целей подойдёт FPGA за 6 000 руб. Для домашних нужд, частного пользования, или для использования в робототехнических конструкторах, та система, которую мы установили на машинке, вполне перекроет потребности робототехника и любителя.
Количество ситуаций, которые система сможет распознать (идентифицировать) и отреагировать так, как её этому обучили, равно 255 в 1 200 000 степени

А вы ей предоставите столько обучающих примеров? ;)
Это как раз и показывает, что возможности системы гораздо больше тех, которые могут понадобиться.
Я спрашивал про обучение: сможете ли вы подготовить достаточное количество обучающих данных, чтобы покрыть хотя бы 90% возможных ситуаций?

Хотя обработка видео — это сложно для понимания и требует много знаний. Давайте возьмём задачу попроще: обучние сети классифицировать текст по составляющим его словам. Представим, что язык у нас сильно недоразвитый, имеет всего 1000 слов, без словоформ, без знаков препинания и всего такого. Также притваримся, что каждое слово может встречаться всего один раз, т.е. вектор бинарный. Чтобы было совсем просто, будем считать, что классифицировать нужно предложения всегда ровно из 10 слов. Количество размещений в данном случае будет равно:

placements = n! / (n-k!) = prop(n-k+i) | i=1:k
n = 1000
k = 10
placements = 990*991*992*993*994*995*996*997*998*999*1000 = 6319933408433610752 ~ 6.3 * 10^18


Это гораздо меньше, чем названные вами 255*1200000 (кстати, почему 255? uint8 изображения имеют 256 значений). Но это значит, что для полного обучения этой жалкой сети для классификации текста вам понадобится 6.3 * 10^18 непротиворечивых примеров: по одному на каждую комбинацию. Вы сможете предоставить такое количество обучающих примеров? Вряд ли.

А что будет, если провести неполное обучение, на, скажем, 10^6 примерах? Миллион примеров — это чертовски хорошая обучающая выборка. Мы можем говорить, что при получении предложения, полностю совпадающего с одним из миллиона, мы получим правильную классификацию. Но вот вероятность получить в свободном тексте ещё одно такое же предложение равно 10^6 / (6.3 * 10^18) = 1.6 * 10^-13. Про остальные 0.9999999999998418 возможных предложения такая сеть мало что сможет сказать.

Так что попробуйте как-нибудь обучить сеть на какой-нибудь простенькой задаче типа классификации текста, а потом уже говорите про возможности системы.
Будет лучше, если я приведу некоторые примеры из практики по обучению нейронной сети конкретным задачам. К сожалению, фото выложить не могу из-за отрицательной кармы. Опыт работы данной НС на промышленном роботе показал, что к системе применимо несколько методов обучения. В проведенных исследованиях в качестве объекта управления использовались промышленные роботы, однако полученные результаты применимы ко всем возможным объектам управления. НС может обучаться в пассивном режиме, когда обучатель, используя метод “вождения за руку”, многократно циклически повторяет движения робота в режиме обучения, добиваясь того, что робот будет двигаться с заданной точностью, необходимой для выполнения поставленной задачи, т.е. без формирования обучаемой выборки. Того же результата обучатель может добиться, если по ходу движений робота будет подавать сигналы коррекции лишь в тех ситуациях, в которых сигналы управления исполнительными двигателями имеют наибольшие отклонения от требуемых значений, т.е. реализовывать вариант обучения, который позволяет значительно сократить его продолжительность. К тому же, НС позволяет использовать в процессе обучения не все возможные ситуации, общее количество которых может быть огромным, а только те, которые характерны для достижения поставленной перед роботом цели и необходимы по мнению обучателя. Но наиболее эффективным методом обучения является метод с использованием обобщенных ситуаций. Так называемое обучение в активном режиме, когда ситуации обучаемой выборки формируются такими, чтобы каждая из них отражала целый класс конкретных ситуаций, процесс обучения при этом значительно упрощается. Так, в рассматриваемом примере поиска ключа требовалось обучить робот поиску предмета (ключа), произвольно расположенного среди прочих предметов.
Одна из первых систем очувствления робота включало 140 фотоэлектрических рецепторов сетчатки технического глаза и 840 нейронных связей. Сигналы управления поступали на три исполнительных двигателя. Один двигатель отвечал за движение по оси х, другой – по оси у, а третий двигатель отвечал за поворот робота вокруг своей оси. В данном эксперименте в обучаемую выборку входила одна визуальная ситуация (изображение ключа) и шесть обобщённых.
Поиск ключа (цели) можно было повторить при ином взаимном расположении предметов, при наличии других посторонних предметов, при иной ориентации ключа, и при этом, за счёт использования обобщённых ситуаций, не требовалось переобучать систему. Система будет всегда находить ключ. Обучение поиску ключа составляло несколько минут. Экспериментальные работы по применению данной НС показали, что возможно создание интерфейса, привычного для нас в радиоуправлении. Кто-то найдёт этот способ обучения более удобным или интересным, чем другие методы. Хотя бы потому, что он для человека более естественен.
Я могу сходу назвать с десяток нестыковок и косяков в вашем описании, но давайте лучше вы просто приведёте ссылку на эксперимент, и мы вместе посмотрим, что в нём использовалось, и что из этого получилось.
Прошу прощения за расчёты. Вместо количества ситуаций 255 в 1 200 000 степени, должно быть 255 в 307 200, вместо 255 в 16 588 800 — 255 в 2 073 600 степени.
«Каждую секунду через наше зрение поступает 0.04 ГБ.»

Как получилась эта цифра? Хотелось бы увидеть ваш расчет.

Каждая сетчатка у человека содержит около 6—7 млн колбочек и 110—125 млн палочек: ссылка (https://ru.wikipedia.org/wiki/%D1%E5%F2%F7%E0%F2%EA%E0)

То есть физическое разрешение сетчатки: 100 мега пикселей. Предположим картинка сразу после сетчатки усредняется и далее в мозг поступает 10 мега пикселей.
предположим что на цвет и яркость уходит 24 бита, тогда 10 000 000* 24= 240 000 000 бит
в байтах это 30 000 000 байт т.е примерно 30 мб, но это один кадр а человек в секунду замечает 30-40 кадров, и того в секунду в один глаз влетает 35*30=1 ГБ. То есть в один глаз в секунду попадает 1 Гигабайт.
К примеру, вот расчёты, которые публиковались здесь на хабре. Если найду ссылку, скину.
Сетчатка человеческого глаза имеет приблизительно 7-8 млн колбочек, отвечающих за цветное зрение, и около 120 млн палочек (черно-белое зрение). Узким местом, в которое упирается максимальная частота «кадров», передаваемая органом зрения, является — латентность нервных синапсов (участок связи между нейронами, где импульс передается путем выброса и захвата химических веществ). По разным оценкам это примерно 100-150 Гц, что является пределом скорости передачи изображения в зрительную кору головного мозга. Количество нервных волокон в зрительном нерве составляет примерно 1 200 000. Если принять, что одно волокно за такт может передать 1 бит информации, то суммарная пропускная способность зрительного нерва примерно равна 1.2*106*150 бит=180 мегабит/с. Нашему мозгу приходится обрабатывать суммарный поток в 360 мегабит/с (или 45МБ/с = 0.043 ГБ/с) столько от зрительного анализатора.
Да, я не знал что в зрительном нерве 1200000 волокон, ну тогда, думаю перед тем как попасть в зрительный нерв, картинка каким-то образом преобразуется. что в случае компьютера тоже съест вычислительную мощность. Пока для меня нейросети это скорее еще один математический алгоритм, причем очень сложный (диффуры, диффуры, диффуры), при этом про какие-то серьезные успехи с этим алгоритмом, например, в распознавании образов не слышно. Т.е не видно его успешного применения на практике.
Проблема ИНС — устойчивость решения. Да, сетка может обучиться, но никогда нельзя быть уверенным, что решение устойчиво на всём диапазоне возможных входных значений. Аналитическое исследование в общем случае — невозможно, поэтому для критически важных применений ИНС не используют.

Сохабровчане, а только у меня кровотечение из глазниц от первого слайда?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации