Так и я же о том. Вы оба равно высокоэрудированы и равно системно мыслите. Разница только в неонке, которая внутре ваших изобретений. А в остальном удивительно ковариантные персонажи.
Нет, не нужно. Всё, что можно было сделать с персептроном, сделали два поколения (человеческих) назад. Возьмите что-то более актуальное — спайк-сети, жидкие, инфекционные, имунные, роевые алгоритмы, да мало ли — и попробуйте придумать что-то новое на острие науки, а не на антресолях.
Я очень привязался к саркастическому определению, которое Хофштадтер приписывает Ларри Тесслеру: «ИИ — это то, что ещё не сделано». В том смысле, что каких бы успехов не достигли в этой области, решённые задачи немедленно объявляются не такими уж интеллектуальными и «ИИ» каждый раз отодвигается ещё немного дальше. Это было сказано ещё до разделения ИИ на вычислительный и общий, но в целом, на мой взгляд, не потеряло актуальность.
Дело не в физическом времени, а в модельном, то есть в количестве примеров в обучающей выборке.
Если у вас полносвязная сеть с 16 входами, 1000 нейронами в скрытом слое и 256 выходами, то у вас 273256 весов. То есть до сходимости классификатора вам нужно вам нужно порядка 27 325 600 сигналов в обучающей выборке. Эти астрономические числа на практике вполне проканают за «вечность».
Интересно, что сложность в вашем описании эквивалентна энтропии, хаосу =) Что, конечно, не умаляет вашей правоты — абсолютно упорядоченый объект малоинтересен.
На самом деле, путей больше двух.
Ваш — самый архитектурно избыточный и самый, теоретически, устойчивый: один выход — один класс, победитель получает всё (не совсем понятное для бинарной сети правило, но допустим). Вполне возможно, что когда-нибудь он будет безошибочен, потому что сигналы можно разграничить очень чётко. Но обучаться до этого момента он будет примерно вечность (сколько там у вас весов? Несколько раз встречал рекомендацию о размере обучающей выборки — 100 наблюдений на каждый вес).
Второй — традиционный. Каждый выход возвращает 0 или 1, из них складывается двоичное число, которое и есть номер класса. Победителя не выбираем, сколько активировалось, столько и активировалось. Вместо N нейронов нужно всего лишь log2(N), что намного лучше с точки зрения времени обучения. Высокая точность теоретически достижима, практически едва ли, потому что любая случайная активация перебрасывает сигнал хрен знает куда.
Третий — нечёткий. На выходе всего один суммирующий нейрон, сеть, по сути, должна найти одну функцию от 900 аргументов, которая давала бы только 10 разных значений. Математически доказано, что при достаточном количестве весов это всегда выполнимо на сужающей функии — будь то сигмоида, ещё лучше радиально-базисная, ещё лучше вейвлет… короче, их много.
Минусы — абсолютная точность почти недостижима, потому что везде float. Плюсы — при ошибке возникает не хаотичное перескакивание в другой класс, а отклонение, пропорциональное объективной разнице сигналов. Его можно интерпретировать, обрабатывать, компенсировать и т.д., а не просто выбрасывать.
Сложно говорить «вообще» потому что разный подход порождает разную архитектуру. У сети с 10 выходами априори больше весов, то есть больше степеней свободы и это может оказаться критичным.
Однако если обе сети избыточны, то да, результат будет лучше у аппроксимирующей. Точнее, если считать «точные» попадания — конечно, нет, а если интерпретировать результат как нечёткую классификацию и применить дефаззификацию (хотя бы округлением) — то точно не хуже. А вот по времени обучения — значительно лучше.
Обучающая выборка — шахматная доска, тестовая — сплошная. Да, так ярко, как у вас, они не выделяются, и это нормально. У персептрона действительно хорошие аппроксимирующие свойства.
Если у вас полносвязная сеть с 16 входами, 1000 нейронами в скрытом слое и 256 выходами, то у вас 273256 весов. То есть до сходимости классификатора вам нужно вам нужно порядка 27 325 600 сигналов в обучающей выборке. Эти астрономические числа на практике вполне проканают за «вечность».
Спасибо, исчерпывающе.
Ваш — самый архитектурно избыточный и самый, теоретически, устойчивый: один выход — один класс, победитель получает всё (не совсем понятное для бинарной сети правило, но допустим). Вполне возможно, что когда-нибудь он будет безошибочен, потому что сигналы можно разграничить очень чётко. Но обучаться до этого момента он будет примерно вечность (сколько там у вас весов? Несколько раз встречал рекомендацию о размере обучающей выборки — 100 наблюдений на каждый вес).
Второй — традиционный. Каждый выход возвращает 0 или 1, из них складывается двоичное число, которое и есть номер класса. Победителя не выбираем, сколько активировалось, столько и активировалось. Вместо N нейронов нужно всего лишь log2(N), что намного лучше с точки зрения времени обучения. Высокая точность теоретически достижима, практически едва ли, потому что любая случайная активация перебрасывает сигнал хрен знает куда.
Третий — нечёткий. На выходе всего один суммирующий нейрон, сеть, по сути, должна найти одну функцию от 900 аргументов, которая давала бы только 10 разных значений. Математически доказано, что при достаточном количестве весов это всегда выполнимо на сужающей функии — будь то сигмоида, ещё лучше радиально-базисная, ещё лучше вейвлет… короче, их много.
Минусы — абсолютная точность почти недостижима, потому что везде float. Плюсы — при ошибке возникает не хаотичное перескакивание в другой класс, а отклонение, пропорциональное объективной разнице сигналов. Его можно интерпретировать, обрабатывать, компенсировать и т.д., а не просто выбрасывать.
Однако если обе сети избыточны, то да, результат будет лучше у аппроксимирующей. Точнее, если считать «точные» попадания — конечно, нет, а если интерпретировать результат как нечёткую классификацию и применить дефаззификацию (хотя бы округлением) — то точно не хуже. А вот по времени обучения — значительно лучше.