Краткий обзор популярных нейронных сетей

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

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

    Начну с классики.


    Многослойный перцептрон
    image Самая известная и очень старая архитектура, в которой идут подряд несколько слоев нейронов — входной, один или несколько скрытых слоев, и выходной слой. Почти всегда обучается методом обратного распространения ошибки — что автоматически означает, что мы должны предоставить для обучения набор пар «входной вектор — правильный выход». Тогда входной вектор отправится на вход сети, последовательно будут рассчитаны состояния всех промежуточных нейронов, и на выходе образуется выходной вектор, который мы и сравним с правильным. Расхождение даст нам ошибку, которую можно распространить обратно по связям сети, вычислить вклад в итоговую ошибку каждого нейрона, и скорректировать его веса, чтобы ее исправить. Повторив эту процедуру много тысяч раз, возможно выйдет обучить сеть.
    Сеть такого типа обычно очень хорошо справляется с задачами, где:
    1. ответ действительно зависит только от того, что мы даем на вход сети, и никак не зависит от истории входов (т.е. это не динамический процесс, или, по крайней мере, мы дали на вход исчерпывающую информацию об этом процессе в форме, пригодной для обработки сетью).
    2. ответ не зависит/слабо зависит от высоких степеней и/или произведений параметров — функции этого типа сеть строить почти не умеет.
    3. в наличии есть достаточно много примеров (желательно иметь не менее сотни примеров на каждую связь сети), или у вас есть большой опыт борьбы с эффектом специализации. Это связано с тем, что имея много коэффициентов, сеть может банально запомнить много конкретных примеров, и выдавать на них отличный результат — но ее прогнозы не будут иметь ничего общего с реальностью в случае, если дать на вход примеры не из обучающей выборки.

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

    Рекуррентный перцептрон
    image На первый взгляд похож на обычный перцептрон, единственное существенное отличие состоит в том, что его выходы попадают ему же на входы, и участвуют в обработке уже следующего входного вектора. То есть, в случае рекуррентного перцептрона имеет место не набор отдельных, ничем не связанных образов, а некоторый процесс, и значение имеют не только сами входы, но и то, в какой последовательности они поступают. Из-за этого возникают отличия в методе обучения — используется то же самое обратное распространение ошибки, но для того, чтобы ошибка попала по рекуррентной связи в прошлое, используются разные ухищрения (если подойти к задаче «в лоб» — то возникнет проблема ухода ошибки на бесконечное число циклов назад). В остальном же ситуация похожа на обычный перцептрон — для обучения нужно иметь достаточно длинную последовательность пар вход-выход, которую нужно много раз прогнать через сеть, чтобы ее обучить (или же иметь под рукой мат. модель искомого процесса, которую можно гонять во всевозможных условиях, и в реалтайме давать результаты сети для обучения).
    Сеть такого типа обычно хорошо решает задачи управления динамическими процессами (начиная от классической задачи стабилизации перевернутого маятника, и до любых систем, которыми вообще хоть как-то получается управлять), предсказания динамических процессов, кроме курса валют :), и вообще всего, где помимо явно наблюдаемого входа у системы есть некоторое внутреннее состояние, которое не совсем понятно как использовать.

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

    Ассоциативная память
    image Это широкий класс сетей, которые в той или иной степени напоминают архитектуру Хопфилда, которая состоит из одного слоя нейронов, выходы которого поступают на его входы в следующий момент времени. Этот слой служит и входом сети (в начальный момент выходы нейронов принимаются равными входному вектору), и ее выходом — значения на нейронах, образовавшиеся в конце работы, считаются ответом сети. Эта сеть меняет свои состояния с течением времени до тех пор, пока состояние не перестанет меняться. Свойства весовой матрицы выбраны таким образом, чтобы устойчивое состояние всегда гарантированно достигалось (и обычно это происходит за несколько шагов). Такая сеть помнит некоторое количество векторов, и при подаче на вход любого вектора, может определить, на какой из запомненных он более всего похож — отсюда и название. Двухслойная модификация этой сети (гетероассоциативная память) может запоминать вектора не по-одному, а по парам разной размерности.
    Сети такого типа хорошо справляются с задачами, где нужно определить похожесть вектора на один из стандартных запомненных. Собственно, это единственный класс задач, где они хороши. Также конкретно сеть Хопфилда может использоваться для решения задач оптимизации (например, задачи комивояжера), однако ее эффективность в этой области под вопросом.

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

    Спайковые сети
    image Это особый класс сетей, в которых сигнал представлен не вещественным числом, как во всех ранее рассмотренных сетях, а набором импульсов (спайков) одинаковой амплитуды и длительности, и информация содержится не в амплитуде, а в интервалах между импульсами, в их паттерне. Спайковые нейроны на выходе генерируют спайки, либо одиночные (если суммарный вход не очень большой), или пакеты (если суммарный вход достаточно велик). Этот тип сетей почти полностью копирует процессы, проходящие в мозгу человека, единственное серьезное отличие — для обучения не придумано ничего лучше правила Хебба (которое звучит примерно так: если второй нейрон сработал сразу после первого, то связь от первого ко второму усиливается, а если сразу перед первым — то ослабевает), для которого был придуман ряд небольших усовершенствований, но, к сожалению, повторить свойства мозга в области обучения пока толком не получилось.
    Сети такого типа умеют приспосабливать для решения различных задач, решаемых другими сетями, но редко результаты оказываются существенно лучше. В большинстве случаев удается только повторить уже достигнутое.

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

    P.S. я намеренно не затрагивал сеть Кохонена и подобные ей архитектуры, т.к. не могу сказать о них ничего нового, и на эту тему здесь уже есть отличная статья: habrahabr.ru/blogs/artificial_intelligence/51372

    UPD: а еще здесь есть отличная статья о сверточных сетях, суть которых состоит в обучении набора ядер, с которыми сворачивается изображение, и применения нескольких слоев такой фильтрации последовательно: habrahabr.ru/blogs/artificial_intelligence/74326

    Share post

    Similar posts

    Comments 45

      0
      А что вы можете рассказать об использовании нейронных сетей для сегментации изображения? Например, разбить captcha на символы?
        0
        использовать нейронные сети для распознавания капчи практически невозможно по ряду причин: сети эти не имеют обратной связи между слоями, поэтому на них можно реализовывать пусть и сложный, но всё же линейный алгоритм, поэтому даже небольшой наклон символов сведёт результат распознавания на нет. значительно эффективнее векторизовать капчу и определять символы по шаблону — нейросеть для такой работы непригодна, она работает с битовым образом.
          +2
          >сети эти не имеют обратной связи между слоями

          Я конечно дико извиняюсь, но среди описанных мной архитектур как минимум 2я и 3я даже в моем кратчайшем изложении очевидно содержат обратную связь.
            0
            речь идёт об обратной связи не при обучении, а при работе сети — она ведь не имеет никаких обратных связей, а различные самопальные ухищрения непросто сделать по уму и правильно обучить.

            images.google.com/images?client=opera&rls=en&q=%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F+%D1%81%D0%B5%D1%82%D1%8C&sourceid=opera&oe=utf-8&um=1&ie=UTF-8&ved=0CCQQsAQwAw&imgtype=i_similar&sa=X&ei=GeF0S4WKGNO-_Qarz-iYCg&ct=img-sim-l&oi=image_sil&resnum=2&tbnid=O15ly5nQjLFK9M:
              +1
              Я, разумеется, писал об обратных связях и при обучении, и при работе, странно, что из текста статьи это неочевидно — у меня нет ни слова о разделении этих режимов. Как вы себе вообще представляете обратные связи, которые мы учим, но отключаем при работе? Какой в них смысл тогда, зачем их учить?

              Да, правильно обучить — не очень легко, чтобы заново вывести формулы для обучения рекуррентного перцептрона по методу RTRL, без многократной развертки сети во времени (как в методе BPTT), я потратил недели две (не смог найти их описанными достаточно подробно для программной реализации), на то, чтобы их улучшить, у меня ушло полгода. Над созданием метода обучения динамической ассоциативной памяти по псевдоинверсному алгоритму, мы работали почти год.

              Но я со всей ответственностью утверждаю, что эти архитектуры работают. И если динамчиеская ассоциативная память еще не пригодна для практических применений, слишком много ограничений нам пришлось ввести при ее создании, то рекуррентный перцептрон популярен уже десятки лет, и для задач управления дает результаты, недостижимые при использовании обычного перцептрона без обратных связей. Даже простейшие эксперименты, которые при должном навыке можно провести за полчаса, доказывают это.
            +1
            На сколько мне известно, нейронные сети довольно часто используются для распознавания образов.
              0
              Я конечно извиняюсь, но вы абсолютно не правы. Причем тут обратная связь, когда главная задача — это умение выделять инвариантные признаки для заданного класса изображений, включая инвариантность к наклону, смещению, масштабу и повороту.
              И сделать это можно двумя способами — либо на входе поставить жеско заданный (hard-wired) алгоритм выделения инвариантных признаков (например SIFT), а на выходе обучаемую систему (НС как частный случай), либо, что идеалогически красивее, обучать как выделению признаков, так и их классификации.
              Другое дело, что ни одним из перечисленных в этой статье типов НС это эффективно сделать не удастся.
              И, кстати, в довольно близкой задаче распознавания рукописных символов до сих пор НС держат лидерство.
              0
              Разбивать капчу на символы — в принципе можно поломать голову над какой-то специфической архитектурой для этого дела, но ИМХО это не будет эффективно — проще как следует поработать над обычным алгоритмом для такого разбиения. Равно как и для построения признаков распознавания — выделить прямые, их пересечения, закругления всяческие — это лучше не сетью, а вот из такого набора признаков определить, что за буква — тут уже нейросеть будет полезна, и сэкономит время.

              Хотя можно построить полноценную систему компьютерного зрения на нейросетях (я себе довольно отчетливо представляю как, но, к сожалению не могу гарантировать, что будет хорошо работать) — но капча тут будет очень незначительным побочным результатом :)
                +1
                очень простой способ чтения капчи: сверточная сеть + попиксельное смещение окна отображения на сверточную сеть слева направо.
                  0
                  нейронная сеть, состоящая из сотен китайских голов и рук, справляется на ура, мало ест и распознает даже иероглифы.
                  И всё это, плюс бонус из двадцати индусов, если вы закажете услугу прямо сейчас, достанется вам по цене всего $5 в день за комплект сети!

                  ниже, у пользователя xiWera классное решение, я даже думал над идеей пару часов
                    0
                    во-первых, хабр сегодня не кормили и он съел мои теги «шутка вкл/выкл», а во-вторых, пользователь xiWera не может быть ниже, он априори высок!
                  0
                  Вообще лит-ра по обработке изображений с использованием нейронных сетей интересна=)
                    +1
                    По-моему, можно было и картинки вставить )
                      0
                      Хм… Да, это отличная мысль, сегодня днем постараюсь организовать. Я как-то сконцентриовался на понятности текста, а не статьи в целом.
                        +1
                        Вставил :)
                        0
                        еще есть сверточные сети, сейчас самое мощное в распознавании образов именно они
                          0
                          Они действительно очень интересны для распознавания изображений, а вот об их успехах в других областях я не слышал…
                          Вообще о них конечно тоже стоит написать — но я с ними пока не работал и не разбирался толком, так что это на будущее.
                            0
                            в распознавании звуков их тоже с успехом используют. Тут же главное определить методологию свертки.
                              +2
                              С удовольствием почитаю, если добавите что-нибудь новое кэтому
                                0
                                Здорово! И как я умудрился не заметить эту статью?..
                                Наконец-то я понял суть сверточных сетей, обучать ядра, которыми мы выделяем признаки — это блестящая идея! Спасибо за этот текст!
                            +1
                            В моих экспериментах с нейронными сетями оказался перспективным «алгебраический» метод обучения (я прочитал о нем в какой-то математической статье, хотя не могу быть уверен, что я не переврал то, что там было изложено и не придумал в результате что-то свое). В нем фиксируется какое-то количество входных данных, а затем последовательно перебираются все нейроны. Для каждого нейрона делается предположение, что его выходные данные будут линейно влиять на ответ, откуда задача оптимизации всех весов входящих в него связей становится задачей на поиск минимума многомерной квадратичной функции (в предположении, что погрешность нейронной сети мы оцениваем по сумме квадратов ошибок). К этой функции можно еще добавить разные члены, чтобы придать процессу обучения большую устойчивость. В итоге для каждого нейрона нужно решить некую систему линейных уравнений. В результате нейронная сеть меняется очень быстро, в отличие от метода обратного распространения ошибки (так же известного как движение вдоль градиента с малым шагом). Недостаток метода — решение системы линейных уравнений требует на много больше времени по сравнению с градиентным спуском. В моем случае, генерация обучающих примеров была еще более трудоемкой, так что меня это не волновало, но в других случаях не понятно какой из методов лучше.
                              0
                              Предположение о линейной зависимости выхода сети от выхода нейрона — очень сильное, в общем случае неверное, и имеет какой-то смысл только для перцептронов с малым числом слоев. Возможно, при таком допущении можно получить довольно неплохое начальное состояние сети, но для достижения оптимума нужно двигаться дальше по градиенту.
                              Т.е. смысл такого метода — ускорить обучение (что, возможно, в некоторых задачах будет полезным), но улучшения качества результата обучения тут ожидать вроде не приходится.
                                0
                                Линейная зависимость здесь подразумевается своя для каждого из входных примеров (вычисляется примерно так же, как и в методе распространения ошибки). Так что преград для достижения оптимума тут нет.
                                  0
                                  А, ну если так — то можно конечно, но тогда это уже довольно-таки похоже на градиентный спуск. Мы идем по градиенту (т.к. берем линейное приближение), но только не на малый шаг, а сразу в предполагаемый оптимум. Потом повторяем процесс, и так до победы. Правда, могут быть баги с плохой сходимостью — но наверное авторы метода этот процесс исследовали, и как-то их побороли.
                                0
                                Я думаю смысл этого метода в том, что на начальном этапе правильно проинициализированная сеть вся фукнкционирует в линейной области сигмоида, поэтому ее в принципе можно лианеризовать и на первом шаге использовать алгебраические методы настройки параметров. Более того, для каких-то задач этого будет достаточно. Но фишка в том, что НС как раз используются там, где нужны сложные нелинейные преобразования, поэтому в дальнейшем все равно необходимо будет использовать градиентные или эвристические методы.
                                  0
                                  Почему вы считаете, что это не эвристический метод (а вообще весь этот класс методов называется методы оптимизации)? Нелинейность тут тоже не причем. Градиентный спуск точно так же использует приближение нейронной сети линейной функцией, но в обоих методах чтобы получить эту линейную функцию нужно для начала применить нашу (нелинейную) нейронную сеть ко входам, а затем посчитать производные выходов по каким-либо параметрам (в случае градиентного спуска — по всем весам сети, в случае «алгебраического» обучения — по добавке к входу оптимизируемого нейрона).

                                  Если out_1 — наш выход, out_2 — правильное значение выхода, diff — производная по входу оптимизируемого нейрона, o_1,...,o_n — выходы нейронов предыдущего слоя, dw_1,...,dw_n — добавки к весам нейронной сети которые мы ищем, то я добавляю к сумме (которую я потом буду минимизировать) слагаемое f(dw_1,...,dw_n) = ((o_1 * dw_1 +… + o_n * dw_n) * diff + out_1 — out_2)^2. Значения out_1, out_2, diff, o_1,…, o_n зависят от тестового примера нелинейным образом, так что нелинейность сети сама по себе нисколько не мешает методу.

                                  Проблемы у меня возникали с нейронами, которые постоянно работают в режиме насыщения. Тогда у них значение diff очень маленькое, а значит оптимальные значения dw_i получаются большими. С этим можно бороться добавляя слагаемые const*(w_i+dw_i)^2 призванные удерживать веса сети около нуля.

                                  PS А основная проблема градиентного спуска в том, что в типичных задачах многомерной оптимизации направление градиента и направление на оптимум значительно отличаются (считайте, что между ними 90-epsilon градусов) поэтому сходимость получается очень медленная.
                                    0
                                    Может конечно я не так понял. Но когда говорится алгебраический, у меня возникает ассоциация с методами линейной алгебры.
                                    Это я к тому, что сигма-функция дифференцируема, но нелинейна. Точнее линейна на определенном своем участке. И вот если вся сеть функционирует только в этих участках, ее можно просто описать в матричном виде и соответственно вычислить значения весов методами линейной алгебры.
                                      0
                                      Если вся сеть на линейном участке, то ее можно свести к однослойной и большого смысла в ней действительно нет. Поэтому никто так и не делает.

                                      Так что тут методы линейной алгебры используются только для решения симметричной системы линейных уравнений, полученной из задачи оптимизации квадратичной функции и на этом «алгебраичность» подхода заканчивается.
                                        0
                                        Ну специально сводить тоже смысла нет. Это произойдет в неявном виде в ходе матричных операций. Я вообще имел ввиду, что на начальном этапе обучения многие сети таки функционируют в линейной области.
                                        В любом случае мне нравится ваш ход мыслей, плюсанул. =)
                                +3
                                Интересно было бы почитать практику применения разных типов сетей. Типа: задача такая-то, поскольку тип задач такой-то, то сеть будем использовать такую-то, реализацию возмем этакую (например, matlab или еще что готовое), сконфигурирем так-то, получим результат такой-то, сделаем выводы, введем поправку и т.д. + картинки, куда же без них :).
                                  0
                                  Хм… Я подумаю на эту тему. Проблема в том, что я занимаюсь в основном исследовательскими задачами, а те прикладные, которые иногда попадаются, решаются без сетей (к сожалению, такие уж они по своей сути, нейросети там не к месту).
                                  0
                                  А про пандемониум Селфриджа можете рассказать? насколько я понял, это тоже вид НС, однако у нас в курсе про него немного было сказано, но выглядит весьма интересно… беглый поиск тоже мало чего дал…
                                    +1
                                    К сожалению, я с этой идеей не знаком. Беглый поиск в инете дал только самые общие сведения — и я в принципе разделяю точку зрения, что в процессе мышления очень большую роль играют ассоциативные связи, переход активности от одного понятия к другому — но это общая мысль. А то, в какой степени она будет работать, зависит от конкретики при реализации — и на эту тему я ничего не нашел, увы. Так что сказать что-либо определенное не могу.
                                      0
                                      Ок, значит тема еще недостаточно раскрыта, дождусь книжку по НС и попробую подробно разобраться
                                    +1
                                    Прошу прощения за дилетантский вопрос — случайно не подскажете в каких конкретных прикладных областях применяются экспертные системы на основе нейронных сетей? И чем они лучше rule-based экспертных систем?
                                      0
                                      Нет, я вообще не слышал о таких экспертных системах (впрочем, я не особо интересовался этой тематикой, так что возможно их не так уж и мало). Нейронные сети в экспертной системе — это крайняя мера, основным достоинством этих систем обычно считается прозрачность рассуждений, возможность проверить и, при необходимости, улучшить работу системы просто прочитав последовательность выводов, сделанных ей при решении некоторой задачи.

                                      Однако в случае, если мы сами не можем сформулировать правило, по которому определяется некоторый элемент, из которого потом строится логический вывод — например, если он зависит от множества факторов, возможно не вполне определенных, из которых не удается построить инвариантный признак — применение нейросети для этой цели возможно. Но в таком случаее скорее стоит говорить о подготовке данных нейросетью для последующей обработки экспертной системой.
                                        0
                                        То есть получается, что если мы работаем с хорошо известной областью знаний и нас больше интересуют сами знания, а не inference logic, которая в конкретной прикладной узкой области знаний стандартна, то нейронные сети — это «пушкой по воробьям», неподходящий инструмент?
                                          0
                                          Не то чтобы «пушкой по воробьям», просто задачи обычно разные. Если нам нужно получить результат как-нибудь, лишь бы работало — то нейронные сети уместны, если же нам нужно знать, почему именно так а не иначе, важно иметь возможность вручную проконтролировать выводы системы — то нейросеть тут не подходит.
                                            0
                                            Спасибо, очень интересно. Как я понял, если мы имеем дело с экспертной системой на нейронной сети, то об explanation facility речи быть не может.
                                              0
                                              Да, это один из фундаментальных недостатков нейросетей. Хотя в принципе немало работ посвящено извлечению знаний из обученных сетей, и некоторые успехи в этой области явно есть — обычно в таких работах как раз рассматривают процесс превращения нейросети в экспертную систему классического вида, и в некоторых случаях получают вполне неплохие результаты.
                                                0
                                                «Понял, будем искать» :)
                                      0
                                      Повторно задам вопрос, который не раз встречался Выше — кто может привести конкретный пример практического использования нейронных сетей? Сеть такая-то, задача такая-то, проблемы такие-то, результаты такие-то, результаты используются там-то и там-то… Ну или что-то в таком духе.
                                        +3
                                        Ну, например такая задача: в машине стоят 4 ультразвуковых датчика и один излучатель, по получаемым ими сигналам нужно определить, находятся ли водитель и пассажир в положении, при котором следует открывать подушки безопасности в случае аварии (задача возникла из-за того, что в существенном проценте случаев люди пострадали бы меньше, если бы подушки не открывались).
                                        Имеем на входе 4 графика интенсивности отраженного сигнала от времени, порядка сотни точек в каждом. На выходе — один из 5 классов ситуаций (взрослый/ребенок в нормальном/опасном положении, и отсутствие человека). Замеряно огромное количество примеров, несколько сотен тысяч. Проанализировать сигнал вручную не получилось вообще никак.
                                        Проверено много различных конфигураций 3-4-5-слойных перцептронов, в итоге трехслойный перцептрон с конфигурацией примерно 300-50-5 дал ~98% правильных ответов на независимом тестировании (входов меньше 400, т.к. оказалось, что хвосты измерений можно отбросить без каких-либо потерь). Точнее я сейчас не помню, да и приводить в точности все параметры весьма бессмысленно — в любой реальной задаче нужно пробовать несколько разных конфигураций.
                                          +1
                                          … а, да, результаты, насколько мне известно, стоят на Ягуарах
                                            0
                                            спасибо — это именно тот пример который я хотел получить

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