Схема против нейросети

    Мы снова недооцениваем сложность задач.

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

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

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

    Ключевое здесь — постоянно.
    Миллиарды десятков нейронов и триллионы синапсов постоянно перестраивают свой потенциал и связи под текущую Задачу. Накапливают опыт. Формируют Личность.
    А мы разделили этот процесс минимум на две части: обучение и исполнение, и жалуемся, что как-то много ошибок и в том и другом.

    Постоянно, а не обучили CNN и используем ее в статике для классификации.
    Еще и соревнования устраиваем на лучшую архитектуру нейросети. Но лучшая она лишь для определенного набора данных и постоянно эволюционирует.
    Автопилот Тесла увидел частично заляпанный знак и всё — авария. Сразу шумиха в прессе: «Не работает DeepLearning!», «Роботы — зло».
    Или вот еще интереснее сюжет про рекламу Burger King и Tesla.

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

    Наш мозг так поступает — почему так не должен поступать «силиконовый»?
    Ведь есть интересные разработки по спайковым нейросетям. Обратите внимание на модель нейрона — как вам такой «персептрон»?
    Забыли мы так же про SOINN, а ведь это очень оригинальный алгоритм, который совмещает в себе и обучение и исполнение, причем в динамике.
    Возможно, у него есть продолжение где-то в секретных лабораториях японцев.

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

    Как бы и не надо.

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

    Если задана формула, машина считает её со скоростью недостижимой человеку. Яркий пример: траектории полетов космических кораблей. А ведь начиналось все с таких приборов, но даже они превосходили в итоге людей в скорости расчетов.
    Нет нужды заставлять C/G/TPU имитировать биологические нейроны.

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

    Когда то, вдохновившись работами Boston Dynamics я экспериментировал с робототехникой.
    Жаль, что у меня не было таких мощностей как сейчас, но это привело к очень интересным идеям.
    Долго не получалось обучить что-то адекватное на стандарной полносвязной сети и сигмоиде. Решил попробовать функцию, более подходящую механике модели, основываясь на простой идее:
    Вращение шарниров конечностей робота — это тригонометрия.

    Функция cos в качестве активационной и ограничение значений входов и выходов [-1;1] повысила качество управления и скорость обучения в разы, снизила размер сети.

    Да cos не самая быстрая функция — она вычисляется по таблице или разложением в ряд Тейлора, но она уже есть. Тем более если делать подобные функции как ядро ASIC, то будем иметь примерно 10-тикратный прирост в скорости вычислений.
    Её не надо искать, вычислять, тратить время на обучение ИНС — уже всё давно сделано с помощью наших «нейросеток».
    Есть множество функций еще более ресурсоемких, чем тригонометрия. Алгоритм тот же:
    Берем функцию из базы — соединяем с нужными блоками входы и выходы.

    Эти функции могут быть очень высокого порядка. Вроде тех, что используются в программировании. А их параметры — ID объектов класса Товар, Марка, Цвет, Адрес и так далее.
    Другими словами — передаем спайк (код объекта, ID) в нужное место, а не вектор из рациональных чисел, который обозначает непонятно что.

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

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

    В итоге Data Scientist программируют… схемы — архитектуры нейросетей. Где-то интуитивно, где-то на основании литературно-технического опыта или после отбора AutoML.
    «Танцы с бубном» — по другому не получается. Потому что DeepLearning красиво работает на учебных датасетах — реальность ставит всё на место.

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

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

    Выбор функционального базиса и целевой функции для подобной системы — темы для отдельных статей. Надеюсь, у меня хватит вдохновения, чтобы написать их.
    Искренне надеюсь на вашу поддержку.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 42

      +2
      Думаю мы просто не понимаем принципа работы мозга.
      Представьте если роботы будут изучать себя похожими методами и пытаться синтезировать супер-компьютер путем «обучения» схемы из транзисторов. При этом слабо представляя, что подобный компьютер может иметь изменяемые внутренние состояния и не понимая где их хранят.
      Представили — Думаю мы сейчас примерно этим и занимаемся.
        0
        Согласен.
        Я об этом и говорю.
        Более того — у нас есть множество концепций, которые мы можем эффективно использовать без ИНС и попыток воссоздать биологический мозг.

        Использовать то, что есть.
        В том числе и свой мозг — желательно эффективно))
          0
          habr.com/ru/post/489068
          Для реализации данного проекта обязательно требуется создать процессор основанный на принципах функционирования мозга.
            0
            ААА. Старый знакомый!)
            Спамим?

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

            Не обязательно.
            –1
            эффективно использовать без ИНС и попыток воссоздать биологический мозг.

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

              0
              Простите, но вы свалили всё в одну кучу и, конечно, выводы из этого получились странные.

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

              Не они, а DS.
              А имя… что в имени!

              Действительно!))
              0
              Кстати почему-то учитываются только нейроны, но ведь есть еще астроциты, которые тоже влияют и инициируют/получают импульсы нейронам.
              Вот здесъ интересно описана модель для tripartite neurons (где астроциты являются частью этих составных нейронов).
              www.ncbi.nlm.nih.gov/pmc/articles/PMC6057343
              Астроциты общаются между собой через медленные calcium waves и с удаленными астроцитами через нейроны, так что нейроны можно считать умными (а может и не очень умными, пока полностью неизвестен полный потенциал астроцитов) хайвеями, а астроциты в виде городов и пригородов.

              Меня поразила вот эта книга:
              «The Root of Thought: Unlocking Glia the Brain Cell That Will Help Us Sharpen Our Wits, Heal Injury, and Treat Brain Disease» by Andrew Koob
              www.amazon.ca/Root-Thought-Unlocking-Sharpen-papeback/dp/0134383036
              Я ее читал по моей подписке на Safari Books Online как часть трилогии «Modern Discoveries in Neuroscience… And What They Reveal About You» и эта книга полностью перевернула мое мировоззрение об нейронах и астроцитах и их взаимодействии.

              Вот здесь много информации об взаимодействии нейронов и астроцитов: www.frontiersin.org/articles/10.3389/fncel.2018.00323/full
              Все статьи на английском.
              Вот тут есть немного на русском:
              www.unn.ru/pages/e-library/aids/2007/30.pdf
              cyberleninka.ru/article/n/o-roli-astroglii-v-golovnom-mozge-v-norme-i-patologii
                0
                Спасибо за подборку!

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

                Более того, я сторонник теории о том, что мозг — квантовый компьютер. И кубитами в нем являются если не нейроны, то их совокупности. Так что кубитов, точнее их биологических аналогов, в мозгу миллионы (Сравните с 54 этого прорыва).

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

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

                        0
                        «Диавол кроется в деталях».
            0
            Берем функцию из базы — соединяем с нужными блоками входы и выходы.

            Эти функции могут быть очень высокого порядка. Вроде тех, что используются в программировании. А их параметры — ID объектов класса Товар, Марка, Цвет, Адрес и так далее.
            Другими словами — передаем спайк (код объекта, ID) в нужное место, а не вектор из рациональных чисел, который обозначает непонятно что.


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

            «Танцы с бубном» — по другому не получается. Потому что DeepLearning красиво работает на учебных датасетах — реальность ставит всё на место.

            Deep Learning имеет огромное число применений в реальном мире.

            Что нет в машине мышления, моделирования, творчества.

            У OpenAI есть MuseNet, генерирующая музыку. У Nvidia — stylegan2, генерирующая лица людей. Можно ли это назвать творчеством? DeepMind моделирует положение молекул в стекле при помощи графовой нейронной сети, если вы это моделирование имели в виду.
              +1
              Кажется, вы придумали экспертные системы.

              Вам это только кажеться)
              Deep Learning имеет огромное число применений в реальном мире.

              А я и не спорю. Но вам стоит пообщаться с экспертами — о том как они это применяют.
              У OpenAI есть MuseNet, генерирующая музыку. У Nvidia — stylegan2, генерирующая лица людей. Можно ли это назвать творчеством? DeepMind моделирует положение молекул в стекле при помощи графовой нейронной сети, если вы это моделирование имели в виду.

              Я то же эти статьи читал)
              Почитайте, что значит Творчество.
                +1
                А я и не спорю. Но вам стоит пообщаться с экспертами — о том как они это применяют.


                А что не так в применении DL для машинного перевода, например? Ну или в предсказании временных рядов? О чём должен сказать эксперт?
                  0
                  «Танцы с бубном»
                    0
                    Хм… Про танцы с бубном мне обычно рассказывали люди, которые только начинали работать в ML. А эксперты обычно объясняли новичкам, что никакого шаманства не существует, всё вполне объяснимо. Ну и воспроизводимость результатов говорит о том, что эти результаты получены не случайно.
                0
                почему так не должен поступать «силиконовый» [мозг]

                Это о тех, кто операцию по увеличению мозга сделал?

                  0
                  Ага. О троллях с силиконовыми мозгами.
                  +2

                  Что-то как-то не очень.


                  В первом слое хватит и фильтра Собеля. Без обучения. Процесс упростится.

                  А сами то пробовали так делать? И насколько "упростился" процесс? И зачем, в таком случае в первых слоях делают аж по 32-64 фильтра?


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

                  Есть online learning, если что.


                  Когда то, вдохновившись работами Boston Dynamics я экспериментировал с робототехникой.
                  Жаль, что у меня не было таких мощностей как сейчас, но это привело к очень интересным идеям.
                  Долго не получалось обучить что-то адекватное на стандарной полносвязной сети и сигмоиде. Решил попробовать функцию, более подходящую механике модели, основываясь на простой идее:

                  Вы же знаете, что Boston Dynamics это в первую очередь про классическую теорию управления, и т.д? ML у них появилось очень недавно.


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

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


                  «Танцы с бубном» — по другому не получается. Потому что DeepLearning красиво работает на учебных датасетах — реальность ставит всё на место.

                  Ну неправда же. Вполне себе успешно решают кучу задач. Причем, зачастую, с огромным отрывом от других методов. Разумеется, DL подходит для решения не всех задач.


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

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


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

                    0
                    А сами то пробовали так делать? И насколько «упростился» процесс? И зачем, в таком случае в первых слоях делают аж по 32-64 фильтра?

                    Пробовал. А в DL сколько карт? Процесс обучения первого слоя уже не нужен.
                    По сути — RL.
                    Только мы хардкодим первые слои, а не обучаем.
                    Есть online learning, если что.

                    Впервые слышу. Есть какие то реальные примеры использования в промышленных масштабах?
                    Вы же знаете, что Boston Dynamics это в первую очередь про классическую теорию управления, и т.д? ML у них появилось очень недавно.

                    А говорят — мы отстали. Я использовал ML раньше BD!))
                    Ну неправда же. Вполне себе успешно решают кучу задач. Причем, зачастую, с огромным отрывом от других методов. Разумеется, DL подходит для решения не всех задач.

                    Одни DS говорят одно, другие — как вы. Вы DS?
                    Так-то дискретная оптимизация это значительно более сложная задача, чем задача оптимизации непрерывных ф-ий. Как минимум в большинстве случаев.

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

                    Не буду спорить. Я — практик.
                    Практик который любит ломать теории, именно так и появляются новые!)
                      0
                      Пробовал. А в DL сколько карт? Процесс обучения первого слоя уже не нужен.

                      Что подразумеваете под картой? Карты активации? Если да, то на выходе слоя, или вообще всего?


                      И как результаты на MINST/ImageNet/COCO? Как ваши hardcoded фильтры работают с разными каналами? Если что, то выигрыш от необучаемого первого слоя почти никакой. Этот слой почти ничего не стоит сам по себе (благо входов мало).


                      Что хардкодить во втором слое — большой вопрос.


                      Впервые слышу. Есть какие то реальные примеры использования в промышленных масштабах?

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


                      А говорят — мы отстали. Я использовал ML раньше BD!))

                      Да много кто использовал. Но у BD безумно крутые результаты, а у вас? К слову, я не уверен что они используют ML для чего-то кроме CV задач.


                      Одни DS говорят одно, другие — как вы. Вы DS?

                      Использую DL, классический CV и оптимизации в своей работе. Плюс-минус успешно. Общаюсь с другими людьми использующими сетки — их мнение примерно совпадает с моим.


                      Практик который любит ломать теории, именно так и появляются новые!)

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

                      0
                      И как результаты на MINST/ImageNet/COCO? Как ваши hardcoded фильтры работают с разными каналами?

                      Да забудьте вы о них. it's wrong way.
                      Что хардкодить во втором слое — большой вопрос.

                      Я не говорил о втором слое. RL первого.
                      Не особо интересовался, если честно под мои задачи хватает оффлайн обучения.

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

                      Кто сказал что я не изучил? Пару походов даже упомянуты в статье.
                      Я если и продвигаю, то точно не динамическое обучение))
                      Да много кто использовал. Но у BD безумно крутые результаты, а у вас? К слову, я не уверен что они используют ML для чего-то кроме CV задач.

                      Я там смайлики поставил… специально… юмор)
                      Использую DL, классический CV и оптимизации в своей работе. Плюс-минус успешно. Общаюсь с другими людьми использующими сетки — их мнение примерно совпадает с моим.

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

                      В это проблема ученых степеней — обладатели их считают, что все понимают в этом мире.
                      Математика, которой в том числе описываются и ИНС, не полностью отражает RealWorld.
                      Вы, наверное, считаете что backpropagation — оптимизации непрерывных ф-ий. Так?
                        0

                        Я извиняюсь, но можете отвечать на мой коммент? Не очень удобно отслеживать ваши ответы


                        Да забудьте вы о них. it's wrong way.

                        Вы не ответили на мой вопрос. И да, было бы круто если бы вы объяснили почему это it's wrong way. Вы говорите что можно не обучать первые слои, так почему бы не проверить это утверждение на практике, на устоявшихся задачах? Если это не работает на стандартных задачах, или работает не оч. хорошо, то выходит что ваше утверждение не верно?


                        Я не говорил о втором слое. RL первого.
                        https://habr.com/ru/post/508482/#comment_21786812
                        Только мы хардкодим первые слои, а не обучаем.

                        Думал что вы говорите о первых (1, 2, 3) слоях.


                        Тогда не стоит и писать о нем.

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


                        И, я так понимаю, мнение отличное от вашего вы слышать не хотите?)

                        Я хочу услышать аргументированные ответы на мои технические вопросы.


                        В это проблема ученых степеней — обладатели их считают, что все понимают в этом мире.
                        Математика, которой в том числе описываются и ИНС, не полностью отражает RealWorld.
                        Вы, наверное, считаете что backpropagation — оптимизации непрерывных ф-ий. Так?

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


                        Вы, наверное, считаете что backpropagation — оптимизации непрерывных ф-ий. Так?

                        То что называют backpropagation в современном DL это просто взятие vector-jacobian product от ф-ии ошибки, это еще не сама оптимизация. И да, градиентными методами плохо, но можно оптимизировать и разрывные не всюду гладкие ф-ии, но совсем без гарантий.

                          0
                          То что называют backpropagation в современном DL это просто взятие vector-jacobian product от ф-ии ошибки, это еще не сама оптимизация. И да, градиентными методами плохо, но можно оптимизировать и разрывные не всюду гладкие ф-ии, но совсем без гарантий.

                          Вы сами на все ответили.
                            0

                            Без обид, но я вообще не понимаю к чему этот комментарий.


                            Остальные мои вопросы тоже оставите без ответа?

                              0
                              Без обид, но чем больше я отвечаю, тем больше у вас вопросов, причем одни и те же.
                              Вы не внимательны, но я отвечу)
                              Вы говорите что можно не обучать первые слои, так почему бы не проверить это утверждение на практике, на устоявшихся задачах?

                              Это тысячу раз уже проверено и мной в том числе. Хотите — проведите эксперимент сами — так у вас куча вопросов отпадет.
                              Например, потому что это красиво снятые отобранные статические картинки, а не видео в реальном времени с перепадами яркости итп.
                              Думал что вы говорите о первых (1, 2, 3) слоях.

                              Я так не говорил:
                              В первом слое хватит и фильтра Собеля. Без обучения. Процесс упростится.

                              Там где палочки под разным углом. В принципе, для простых систем навигации можно и следующий слой захардкодить или ASIC сделать — там где крестики, уголки итп.
                              Учеными степенями не обладаю, с реальными задачами требующими DL/CV и н-го количества костылей сталкиваюсь ежедневно.

                                +1
                                Это тысячу раз уже проверено и мной в том числе. Хотите — проведите эксперимент сами — так у вас куча вопросов отпадет.

                                А я пробовал, и как-то не очень это работает. Более того, люди тоже не используют такую очевидную "модификацию". Можете почитать сборник более-менее современных трюков для обучения CNN https://arxiv.org/pdf/1812.01187.pdf часть ResNet-C. Первый слой мало того что оставляют обучаемым, так еще и декомпозируют. Не буду зарекаться что работы в которой люди используют оператор собеля как инициализацию не существует. Но абсолютно во всех известных мне работах по CNN (а читал я их довольно много) первый слой делают обучаемым. Могу подкинуть другие статьи, в том числе сверх оптимизированные MobileNetv3, какой-нить рилтаймовый YOLOv4, и т.д.


                                И еще раз — первый слой сам по себе не проблема по части скорости/сложности обучения.


                                Там еще были вопросы про дискретную оптимизацию, например.


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

                                  –1
                                  Но абсолютно во всех известных мне работах по CNN (а читал я их довольно много) первый слой делают обучаемым.

                                  «Известных мне» — ключевое.

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

                                  Вы их строите каждый день))
                                  И еще раз — первый слой сам по себе не проблема по части скорости/сложности обучения.

                                  Статья как бы не об этом.
                        +1
                        А можете пояснить, о чём спор? Обычно, если мы может нормализовать изображение и провести корректный image registration, то нейросеть вообще не нужна, а если хотим обмануть принцип GIGO или сами толком не можем сформулировать, а что, собственно, ищем — тогда НС.
                          –1
                          А можете пояснить, о чём спор?

                          Да похоже не о чем. Просто потрындеть. Никакого конструктива.

                          Если… если… если.
                          Я вот то же прихожу к выводу, что все пути ведут… ммм…
                          Какую концепцию на применяй — всеравно получается какой то результат.
                          0
                          В первом слое хватит и фильтра Собеля. Без обучения. Процесс упростится

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

                            Юное поколение плохо знает историю.
                            Собель и другие фильтры появились задолго до DL. Они использовались в «оборонке»… еще аналоговой и прекрасно работали.
                            Их «обучили» нейросетки наших математиков)

                            Я рекомендую почитать старые учебники по техзрению и ТАУ. Чем старше — тем лучше.
                            Там все сегодняшние «прорывы» уже описаны.
                              0
                              Собель и другие фильтры появились задолго до DL. Они использовались в «оборонке»… еще аналоговой и прекрасно работали.

                              А современные методы работают ещё лучше. Например, в задаче поиска лиц на изображении. Метод Виолы — Джонса далеко позади нейронных сетей, хоть и быстрее на том же железе.

                                0
                                Ну вы сравнили))
                                Речь идет об первом слое и базовых признаках.
                                Распознавание лиц это очень сложный процесс, в принципе.
                                  0

                                  Ну, значит я неверно понял ваше сообщение. Я думал, вы утверждаете, что новые методы вообще не лучше старых.

                              0

                              Возможно, это была особенность вашей конкретной задачи.


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


                              Как вариант, можно подавать результат применения оператора Собеля отдельным каналом вместе с самим изображением. Feature engineering хуже не сделает. Сетка сама решит, нужна ей эта информация или нет.

                                0
                                Как вариант, можно подавать результат применения оператора Собеля отдельным каналом вместе с самим изображением. Feature engineering хуже не сделает. Сетка сама решит, нужна ей эта информация или нет.

                                Отличная идея!

                                Но дело вот в чём. ImageNet это 256x256.
                                Разрешение нашего глаза чистые 50Мп или даже 100Мп (7071x7071 или 10000x10000). Поэтому регистраторы наклонных линий шириной в пиксель очень даже хорошо работают в биологии. А зрительный нерв в итоге выдает 2-3Мбит или Мп (точно не помню).
                                Вероятно на низком разрешении обучаемые ядра смазывают краевые эффекты, поэтому работаю CNN… как-то.

                                И прикладное применение имеется — обработанные уже софтом iphone «пластиковые» фотки в инсте или инет магазинах.

                                Для реального мира, если обработку скачков яркости, цветности итп выносятся в хардкодные модули, не имеющие связи с нейросеткой — теряется много важно информации и происходит дублирующая обработка.
                                  +1
                                  Но дело вот в чём. ImageNet это 256x256.

                                  Там разные размеры. Впрочем, это я так, занудствую. :)


                                  Разрешение нашего глаза чистые 50Мп или даже 100Мп (7071x7071 или 10000x10000). Поэтому регистраторы наклонных линий шириной в пиксель очень даже хорошо работают в биологии. А зрительный нерв в итоге выдает 2-3Мбит или Мп (точно не помню).

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


                                  Я бы вообще не сравнивал CNN и глаз. Мы же не сравниваем птицу и самолёт.

                                    +1
                                    Говорить о разрешении глаза не имеет смысла, так как зрение отличается от работы матрицы фотоаппарата.

                                    В статике — да. В динамике + CNN — что то похоже… не считая диапазона яркости.
                                    Я бы вообще не сравнивал CNN и глаз. Мы же не сравниваем птицу и самолёт.

                                    Отчего ж. Мы приближаемся. Глаз уже не может отличить картинку выше 4K. Правда пока на расстоянии, но все же.

                                    Понятно, глаз — это тоже нейропроцессор.
                                    Сколько там еще интересных эффектов кроме линий.
                                    Сколько еще найдем!)
                              0

                              Несколько замечаний.


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

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


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


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

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


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

                              На точность сетуем порой, да. А то, что нет творчества — а зачем оно машине? Я вот не уверен, что это необходимый компонент для большинства задач.


                              И умеем мы далеко не только классифицировать.


                              Нет нужды заставлять C/G/TPU имитировать биологические нейроны.

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


                              Да cos не самая быстрая функция — она вычисляется по таблице или разложением в ряд Тейлора,

                              В процессорах обычно используют CORDIC. Это просто заметка для читателей, которым интересно, но которые ещё не знают. :)


                              «Танцы с бубном» — по другому не получается. Потому что DeepLearning красиво работает на учебных датасетах — реальность ставит всё на место.

                              Deep learning хорошо работает и в реальности. А там где плохо, оказывается, что альтернатив-то и нет.

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

                                Семантика.

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

                                Only users with full accounts can post comments. Log in, please.