19 июня 2012 в 10:42

Формирование высокоуровневых признаков с помощью широкомасштабного эксперимента по обучению без учителя

В статье Распознавание лиц человеческим мозгом: 19 фактов, о которых должны знать исследователи компьютерного зрения упоминался экспериментальный факт: в мозге примата имеются нейроны, селективно реагирующие на изображение морды лица (человека, обезьяны и т.п.), причем средняя задержка составляет около 120 мс. Из чего в комментарии я сделал дилетантский вывод о том, что зрительный образ обрабатывается прямым распространением сигнала, и количество слоёв нейронной сети — около 12.

Предлагаю новое экспериментальное подтверждение этого факта, опубликованное concretely нашим любимым Andrew Ng.

Авторы провели широкомасштабный эксперимент по построению детектора человеческих лиц на основании огромного количества изображений, не маркированных никаким образом. Была построена 9-слойная нейронная сеть со структурой разреженного автоэнкодера с локальными рецептивными полями. Нейронная сеть реализована на кластере из 1000 компьютеров, по 16 ядер в каждом, и содержит 1 миллиард связей между нейронами. Для обучения сети использовали 10 миллионов кадров 200х200 пикселов, случайным образом полученных из роликов YouTube. Обучение методом асинхронного градиентного спуска заняло 3 дня.

В результате обучения на немаркированной выборке, без учителя, вопреки интуиции, в выходном слое сети был выделен нейрон, селективно реагирующий на присутствие лица на изображении. Контрольные эксперименты показали, что этот классификатор устойчив не только к смещению лица на поле изображения, но и к масштабированию и даже к 3D-вращению вне плоскости изображения! Оказалось, что эта нейронная сеть способна обучаться распознаванию разнообразных высокоуровневых понятий, например человеческих фигур или кошек.

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

Концепция



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

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

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

Обучающие данные



Обучающий набор составили путем случайной выборки по одному кадру из 10 млн. роликов YouTube. Из каждого ролика брали только один кадр, чтобы избежать дубликатов в выборке. Каждй кадр масштабировали до размера 200х200 пискелов (что отличает описываемый эксперимент от большинства работ по распознаванию, оперирующих обычно фреймами 32х32 или т.п.) Вот типичные изображения из обучающей выборки:



Алгоритм



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

Описываемый алгоритм использует многослойный автоэнкодер, а также некоторые важные отличительные особенности:
  • локальные рецептивные поля
  • объединение фреймов (pooling)
  • локальная нормализация контрастов.


Локальные рецептивные поля позволяют масштабировать нейронную сеть для крупных изображений. Объединение фреймов (pooling) и локальная нормализация контрастов позволяет добиться инвариантности к перемещению и локальным деформациям.

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

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



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

Целевая функция при обучении сети минимизирует значение погрешности воспроизведения исходного изображения разреженным автоэнкодером. Оптимизация производится глобально для всех управляемых параметров сети (свыше 1 миллиарда параметров) методом асинхронного градиентного спуска (asynchronous SGD). Для решения столь масштабной задачи был реализован паралеллизм модели, заключающийся в том, что локальные веса нейронной сети распределяются на различные машины. Один экземпляр модели распределяется на 169 компьютеров, по 16 процессорных ядер в каждом.

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

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

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

Результаты эксперимента



Удивительно, но в процессе обучения сформировались нейроны, лучший из которых показал точность в распознавании лиц 81.7%. Гистограмма уровней активации (относительно порогового значения Ноль) показывает, какое количество изображений в тестовой выборке вызывало ту или иную активацию «бабушкиного нейрона». Синим цветом показаны изображения, не содержащие лиц (случайные изображения), красным цветом — содержащие лица.



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

Первый метод — отбор тестовых изображений, вызвавших наибольшую активацию нейрона-классификатора:



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



Более подробно количественные оценки и выводы о результатах эксперимента см. в оригинале статьи. От себя хочу заметить, что масштабным вычислительным экспериментом была доказана возможность самообучения нейронной сети без учителя, причем параметры этой сети (в частности, число слоев и межсоединений) приблизительно соответствуют биологическим значениям.
Сергей Подлесный @sergeypid
карма
60,9
рейтинг 23,2
Data science
Самое читаемое Разработка

Комментарии (68)

  • 0
    Ох… Чувствую скоро начнется формирование принципов обучения без ученика…
    • 0
      причем параметры этой сети (в частности, число слоев и межсоединений) приблизительно соответствуют биологическим значениям

      Ну формировать принципы конечно можно (если я правильно понимаю — это чисто математическая задача), но вот применять пока сложно. До тех пор, пока не придумают дешевый аналог нейрона.
      • 0
        активная среда
    • +1
      Кстати… Это же первое приближение к созданию искуственного разума! :)
  • +2
    Потрясающе, конечно! Аж как-то завидно становится, когда смотришь, чем люди занимаются в университетах Калифорнии.
    • +3
      Я ради того перевожу такие статьи, чтобы народ проснулся. Разбудите Герцена!
      • +1
        Вы знаете, с учетом интернета в каждой мобилке и простоты доступа к информации, те кто могли, уже проснулись, а остальные, боюсь, уже и не проснутся никогда…
        • 0
          Не надо столь пессимистично. Вот эта тема не требует особых инвестиций, капитальных затрат. чистая математика (то есть грязная прикладнуха). Сиди себе и ковыряйся. Вот почитают PHP-кодеры и займутся на досуге, не все же CSS-стили равнять.
          • +2
            Я очень люблю искусственный интелект и имею некоторый опыт привлечения людей на ИИ проекты, даже оплачиваемые, не говоря уже о «ради интереса». Многим оно просто не интересно. Не хотят разбираться, не вдохновляются перспективами. Как-то так.

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

    С тем же успехом должен был появиться нейрон, который определяет, например, кота?

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

    • 0
      Да, именно. Если количество котов на выборке было бы достаточно большое, такой нейрон появился бы.
    • +7
      Именно так, и именно кота! В оригинале статьи посмотрите — «лицо кота» было вторым по значимости концептом, который выявила эта сеть. Это связано с тем, что в инете много изображений котов.

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

      Тут главное понять, что изначально мы не задаем жесткую привязку выходным нейронам — «этот кошка, а этот — собака». Сеть в процессе самоорганизации сама выделяет информационно наиболее выгодные обобщения.
      • 0
        Число выходных нейронов там берется с запасом и, насколько я понимаю, не отделается данными. Просто начиная с определенного момента они не очень осмысленны.
  • +1
    Как бы мне хотелось изучить сформированную таким образом сеть, ведь распознавание лиц — это лишь несколько из выходных нейронов, думаю пареллельно сеть нашла множество (тысячи и тысячи) других объединяющих факторов изображений — на других выходных нейронах.
    • +3
      Родилась идея организации распределенной сети на компьютерах добровольцев (по аналогии с проектами @Home), которая непрерывно бы обучалась на случайных картинках из интернета и могла отвечать выдавать матрицу сигналов выходны нейронов по запросу для опредеделенной картинки и проводить обратное преобразование с максимизацией для конкретного выходного нейрона, думаю результаты были бы еще более впечатляющими.
      • 0
        А давайте!
      • +1
        Пусть одна система на 16-ядерном проце будет у нас давать 100Gflops(Если кто-то знает более точные значения — поправьте)
        Тогда суммарная мощность 1000x100Gflops = 100Tflops почитали эту задачу за 3 дня.

        Теперь, для примера — 118Tflops суммарная мощность Rosetta@HOME одного из самых мощных РВ проектов(причем, если я не ошибаюсь, там как раз только процессорные мощности, видюхи не используются). Это 340 тысяч пользователей, миллион компов.

        По идее, если разбить решение этой задачи на год, то получается более-менее вменяемое количество компов в 10 тысяч. Такие мощности(порядка терафлопса) — достаточно легко набрать при должном оформлении и популяризации проекта.
        • 0
          Нужно только определить цели проекта. Очевидно, перепроверить результаты Стэнфорда — не канает. Если мы заставляем 10000 человек скачать программу и кормить ее видеопотоком, то мы должны им сказать, что они взамен получат. Например: «За год мы с вами воспитаем гомункулуса».
          • +1
            Как насчет «За год мы воспитаем гомункулуса, который сможет искать смешные фотки котов! »:)

            А вообще — сами же пишете:
            «Немаркированные данные содержат меньше информации для обучения, чем маркированные. Зато объем доступных данных для обучения без учителя гораздо больше. Например, в задачах распознавания изображений доступно неограниченное количество цифровых фотографий в Интернете, и только ничтожный процент из них промаркирован.
            »
            Создается такая нейросеть. Проверяется, на какие конкретные образы настроились нейроны. Создается база картинок из интернета, которые подходят под тот или иной образ — вот вам и маркированные данные.
            Если продолжить — то в перспективе можно сделать поисковик по картинкам, который будет работать лучше чем существующие — за счет того, что он будет понимать, какой образ есть на изображении.
            • 0
              Проверяется, на какие конкретные образы настроились нейроны.

              Кем проверяется? — Теми 10 тысячами пользователей? Тогда они становятся коллективным «родителем» или воспитателем гомункулуса.
              Кстати, срок воспитания наверняка совпадет со сроком воспитания ребенка от новорожденного до того состояния, когда оно научится правильно классифицировать картинки. И это я не критикую, а излагаю фундаментальный закон наподобие сохранения энергии. ИИ если и будет создан, то его воспитание и обучение будет занимать не меньше времени, чем воспитание и обучение человеческих детенышей.
              • +1
                Я немного не то имел в виду.
                Скажите пожалуйста, нет ли в статье цифр следующего рода:
                1. Сколько по времени проводилась «визуализация обученной сети двумя методами.»
                2. Сколько времени и мощностей занимает распознавание одного изображения.

                «ИИ если и будет создан, то его воспитание и обучение будет занимать не меньше времени, чем воспитание и обучение человеческих детенышей. » — человеческий детеныш ограничен пропускной способностью естественных каналов получения информации. Ну, и количеством нейронов. И то и другое со временем буду выше у ИИ(по крайней мере все к этому идет)…
                • 0
                  Визуализация первым методом как бы ничего не занимает, просто нужно вести учет «топ 100» образов, которые дают наибольший отклик. Про время, затраченное на визуализацию 2 ничего не сказано. Поскольку число параметров там 40 000 (200 х 200), а обучение миллиарда параметров заняло 3 дня, можно прикинуть, что визуализация 2 займет около 1 секунды (это конечно наивный расчет, но порядок секунд наверное можно предположить).

                  Распознавание одного изображения можно оценить 10-100 мкс. Опять-же, рассчитываю исходя из того, что методом градиентного спуска за 3 дня обработали 10 млн. изображений, взял 10000 итераций с потолка.
                • 0
                  вполне возможно, что это фундаментальное ограничение
              • 0
                И это я не критикую, а излагаю фундаментальный закон наподобие сохранения энергии. ИИ если и будет создан, то его воспитание и обучение будет занимать не меньше времени, чем воспитание и обучение человеческих детенышей.

                Далеко не факт, по-моему. У ребёнка всё же достаточно ограниченное количество картинок обычно перед глазам (хотя они и более динамичны и трехмерны), а сеть вон за три дня десять миллионов проанализировала. Если считать, что мозг вместе с глазами способны хоть как-то обрабатывать 24 картинки в секунду, то это 2 млн. картинок в сутки, 5 дней (без сна и отдыха) понадобится ребёнку только чтобы их увидеть. Как-то сомневаюсь, что у него сформируются какие-то связи на распознавание лиц, кошек и т. п.
                • 0
                  Боюсь, что вы неправы. У вас ведь сформировались связи?
                  • 0
                    Как мне кажется за большее время чем 3 дня я научился распознавать конкретные лица как абстрактное лицо.
                    • 0
                      А почитайте мой предыдущий перевод habrahabr.ru/post/136483/ — там про развитие детского восприятия лиц есть инфа.

                      А причем здесь 3 дня?
          • 0
            Как насчет звука. Получить фонетический алфавит. Задача почти аналогичная, скорее всего достаточно оригинальная. За год можно научится распознавать букву «О».
            • 0
              Делали уже аналогичным образом те же авторы (Ng). Даже визуализируют как изображение: по оси X — время, по Y — спектрограмма. Получаются симпатичные буквы «О» в виде кружков (яркость пиксела соответствует амплитуде в спектре).
              • +1
                Вот тут нашел много картинок по теме.
        • 0
          Возьмите в команду спеца по ИИ, он подскажет, как сделать быстрее ;-)

          Градиентный спуск — аналитический алгоритм. Вы можете использовать генетические алгоритмы вместо него. Точность будет, конечно, меньше, но и скорость работы сильно возрастет.

          Обучать сеть год — это бессмысленно совершенно.
          • 0
            Людей по 20+ лет обучают и жалуются на низкое качество…
          • 0
            Здесь речь про асинхронный стохастический градиентный спуск. Он достаточно быстр, в меру точен и масштабируется почти линейно по числу машин. Не слышал про применение для крупномасштабного машинного обучения генетики.
      • 0
        На видюхах, наверное, можно еще быстрее подсчитать, раз задача так хорошо параллелится. По опыту биткоина — быстрее порядка на два.
        • +1
          Согласен — надо бы собраться и сделать. Вообще, из России мало приходит интересных опесорсных проектов. Я бы предложил модуль математики на графкартах для Питона, совместимый по данным с numpy. Думаю, популярность была бы бешеной. И уже в рамках такого модуля можно настрогать реализации для нейрнных сетей, линейной алгебры и прочего.
    • 0
      У них получилось порядка 60К концептов, среди которых, например, круги на воде, решетки, облака и.т.п.
  • 0
    А все же, почему нейрон, отвечающий за конкретный образ или структуру должен обязательно появиться? Я не специалист в нейронных сетях, но есть ощущение что он совсем не обязан возникнуть. Более того, вполне возможно что это не один нейрон, а какая-то группа (реализующая функцию распознавания лиц/котов). Поясните плз.
    • 0
      Он конечно не обязан появиться. Но эксперименты показывают, что появляется, вернее «может появиться». Это го достаточно для подтверждения гипотезы.

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

      Так вот, если самообучающаяся система «неглубокая», то в ней формируются нейроны, отличающие простейшие признаки, такие как короткие отрезки и точки (см. здесь) Интересно, что эти признаки обнаруживают и искусственные нейронные сети, и область V1 зрительной коры головного мозга. Можно предположить, что из этих примитивных элементов в следующих областях мозга синтезируются образы более сложные (например, квадратик из четырех отрезков под 90 градусов). Так что здесь вы правы — в коре V1 на квадратик откликнутся, грубо говоря, 4 нейрона. В высшем отделе на эти четыре нейрона откликнется один нейрон, отвечающий за распознавание квадратика такого размера.

      В описанном же здесь эксперименте удалось построить 9-слойную сеть. Она уже смогла сформировать нейроны, распознающие сложные «концепции» типа лиц, человеческих фигур и т.п. Аналогично, другие математические методы (например, метод главных компонент, чистая линейная алгебра) способны сформировать отклики на обобщенное лицо, обобщенного кота и т.п.
  • 0
    Он конечно не обязан появиться. Но эксперименты показывают, что появляется, вернее «может появиться». Это го достаточно для подтверждения гипотезы.

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

    Так вот, если самообучающаяся система «неглубокая», то в ней формируются нейроны, отличающие простейшие признаки, такие как короткие отрезки и точки (см. здесь) Интересно, что эти признаки обнаруживают и искусственные нейронные сети, и область V1 зрительной коры головного мозга. Можно предположить, что из этих примитивных элементов в следующих областях мозга синтезируются образы более сложные (например, квадратик из четырех отрезков под 90 градусов). Так что здесь вы правы — в коре V1 на квадратик откликнутся, грубо говоря, 4 нейрона. В высшем отделе на эти четыре нейрона откликнется один нейрон, отвечающий за распознавание квадратика такого размера.

    В описанном же здесь эксперименте удалось построить 9-слойную сеть. Она уже смогла сформировать нейроны, распознающие сложные «концепции» типа лиц, человеческих фигур и т.п. Аналогично, другие математические методы (например, метод главных компонент, чистая линейная алгебра) способны сформировать отклики на обобщенное лицо, обобщенного кота и т.п.

  • 0
    А сколько всего нейронов у вас в выходном слое?
    • 0
      Если бы у нас…

      В статье нет прямого ответа на этот вопрос, есть схема сети. Не могу ответить на этот вопрос.
      • 0
        Просто интересно, раз появился нейрон, который распознаёт лица, значит должно быть еще много нейронов которые распознают что-то еще. Например наличие порно на картинке (возможность автоматической фильтрации для видео-хостингов) и много других интересных индикаторов. Я всё правильно понял?
        • 0
          Да, если обучить на соответствующих изображениях.
          • 0
            Разве? Я так понял, что нужна просто достаточная большая репрезентативная выборка фото/видео, чтобы сформировался нейрон, реагирующий именно на порно. Грубо говоря, если подавать на вход одно порно, то сформируются нейроны квалифицирующие порно, но не способные распознать порно это вообще или нет, отнесут нейтральную картинку к «лёгкому порно» и всё.
            • 0
              Самообучающаяся сеть работает не совсем как классификатор. Это мы интерпретируем ее как классификатор порно или лиц. На самом деле она пытается закодировать изображение более экономным способом, чем попиксельно. Она находит часто повторяющиеся фрагменты на многих изображениях, и кодирует их одним нейроном вместо целого поля пикселов (это я упрощаю). Например, если часто бывают сиськи, то сформируются нейроны «сиськи». Поэтому, чтобы они сформировались, сети нужно показать как можно больше порнухи. Я думаю, если будет только порнуха в обучающей выборке, система может испльзоваться как фильтр, потому что если на изображении нет сисек, ни один нейрон не возбудится (!) и в целом фильр выдаст суждение «нет признаков порно».

              Другой вопрос — производительность такого фильтра. Все-таки описываемая сеть имеет 1 млрд. связей и реализована на 169 компьютерах (один экземпляр).
    • 0
      60 000
  • –5



    простите
  • +2
    Интересно, а почему моя нейронная сеть (в голове которая) квалифицирует входной паттерн как однозначно мужское лицо, причём с намёком на спортивный и/или криминальный образ жизни?
  • +1
    Это усредненное лицо из ютюба, значит таких лиц больше. Криминал — эффект растяжения 200х200 наверное
  • 0
    а кто-нибудь обратил внимание на список авторов работы?
    Quoc V. Le xx@cs.stanford.edu
    Marc’Aurelio Ranzato xx@google.com
    Rajat Monga xx@google.com
    Matthieu Devin xx@google.com
    Kai Chen xx@google.com
    Greg S. Corrado xx@google.com
    Jeff Dean xx@google.com
    Andrew Y. Ng xx@cs.stanford.edu

    из стэнфорда всего два человека, а остальные из корпорации добра…
    • 0
      Ng тоже в гугле работает. А где бы они 1000 компов взяли (и трафик на 10 млн ютюбовских роликов).
  • 0
    В статье «Чему нас не научил профессор Ng», вы описываете работу т.н. автоэнкодера. У меня вопрос: там замечательная идея «добиться того, что входной вектор признаков вызывал отклик сети, равный входному вектору» — собственно ничего более интересного (отличительного от других) в этом и нет.

    Да, что-то там сеть себе запомнила. Много лирики о том как хорошо обучение без учителя. Но — что же нам будет выдавать эта сеть? А ничего — только то, что и сами же подали… классификация где?
    • +3
      Ответ на этот вопрос содержится в этой статье. На выходе многослойного автоэнкодера формируется нейрон, чувствительный к обобщенному образу лица. Попробую пересказать ту статью. Автоэнкодер — это двухслойная сеть. Число входов равно числу выходов. Но в первом слое нейронов меньше. Обучаем эту сеть по критерию максимального подобия выхода входу. Получается, что информация проталкивается через узкое горлышко первого слоя нейронов, т.е. объем информации уменьшается, т.е. происходит сжатие.

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


      (Взято из источника, любезно подсказанного +1 dtestyk)

      Когда такую сеть делают многослойной (как в данной статье), она начинает обучаться более сложным образам. Например, появляются нейроны, способные выделять обобщенные лица людей. Можно считать, что если к выходу описываемой 9-слойной сети прибавить отброшенный выходной слой автоэнкодера, то мы бы получили изображение, близкое к исходному. Но это изображение получилось бы не из 40 000 входных пикселов, а из 400 нейронов, один из которых создавал бы на изображении обобщенное лицо, а остальные навешивали по бокам волосы, небо, шею и т.д. Грубо говоря, конечно.
      • 0
        Ну, допустим, «второй слой просто отбрасывают, и оставляют веса только первого слоя». Где этот первый слой в данной 9-слойной сети? Тоже первый? Как тогда обучают (настраивают) остальные? BackProp? А первый слой больше не трогают?
        • 0
          В оригинале статьи прочитайте. Я краткое изложение дал.
          В сети три одинаковых по структуре «суперслоя» — в каждом есть слой энкодера (линейный фильтр), пулинга и нормализации. Так что 1-й, 4-й и 7-й слои являются «первыми».

          Обучали вроде глобально все веса, без обратного распространения. В 9-слойной сети обратное распространение не работает на практике.

          Про энкодер настоятельно рекомендую прочитать (длинный) туториал.
          • 0
            Но вы же уже читали :) иногда проще спросить

            > Обучали вроде глобально все веса, без обратного распространения.

            Не понял — это как?

            > В 9-слойной сети обратное распространение не работает на практике.

            Откуда такой вывод?

            • 0
              ммм… у них что свой алгоритм обучения?
            • 0
              Там реально много букв, я своими словами неубедительно перескажу )))

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

              Насчет обучения без обратного распространения — я наверное лажанулся. Обучали послойно, как я только что сказал, но добавили асинхронный глобальный спуск из-за масштабов задачи. Насколько я понял, берется мини-выборка из 100 изображений, берутся текущие параметры с сервера параметров, проводится обучение автоэнкодера, как положено, получаются градиенты весов. Градиенты передают на сервер параметров. Обновленные параметры становятся доступны всем остальным параллельно работающим обучающимся сетям. В этом градиентный подход заключается.
  • 0
    > Важнейшей особенностью данной структуры является локальная связность между нейронами. Первый подуровень использует рецептивные поля 18х18 пикселов, а второй подуровень объединяет фреймы по 5х5 пересекающихся соседних областей.

    Чем это отличается от сверточных нейросетей Ле Куна? По мне — ничем!
    • 0
      А ну собственно ничем, они так и пишут, что использовали идею Ле Куна
      • 0
        Там несколько отличий:
        1. Не использование свертки. Они это выставляют как преимущество, мол ближе к биологии и позволяет учится другим инвариантам. Я с этим не согласен. (Подробнее в моем комментарии к статье). Сам подход впервые был описан в статье про Topographic Independent Component Analysis.
        2. Т.н. L2-pooling в котором они берут корень квадратный из суммы квадратов.
        3. Функцию ошибки задают как в TICA. У ЛеКуна для разряженных автоенкодеров используются методы predictive sparse decomposition.
  • 0
    Приятно находить все больше людей в русском интернете, которых тоже интересует эта тема.
    По поводу оригинальной статьи есть ряд мыслей.
    Авторы утверждают, что несверточный характер сети имеет преимущества — большую инвариантность детекторов фич. Собственно они на это указывают еще в статье про TiledCNN. Я пока не видел работ, которые бы прямо это доказывали. Да, есть страница на которой они показывают инвариантность к поворотам и масштабированию. Но это обязательно должно быть свойством pooling слоя. Почему бы эту задачу не решить следующему слою.
    Кроме того, архитектура, когда локальные рецептивные поля не имеют связанных весов может привести к отсутствию независимости детектора от положения внутри входного изображения. Т.е. если в сверточном случае все ядра одинаково выделяют признаки вне зависимости от их расположения на входном изображении. То в случае TiledCNN тот же самый признак в углу картинки и в середине будет по разному выделен.
  • +1
    Что-то этот эксперимент стал популярным: даже на ленте ру отметились lenta.ru/news/2012/06/27/ggl/

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