Недавно я прочитал действительно интересную запись в блоге Google Research Blog, рассказывающую о нейронной сети. В основном они используют эту нейронную сеть для решения различных задач, таких как распознавание изображений. Они используют генетические алгоритмы, чтобы «развить» веса аксонов.
В общем, моя идея заключается в следующем. Если бы я должен был написать программу, которая распознает числа, я бы не знал, с чего начать (у меня могла бы быть какая-то смутная идея, но моя точка зрения такова: это не тривиально и не просто), но при использовании нейронной сети мне это не нужно. Создавая правильный контекст для развития нейронной сети, моя нейронная сеть «найдет правильный алгоритм». Ниже я процитировал действительно интересную часть статьи, где объясняется, как каждый слой играет различную роль в процессе распознавания изображений.
Одной из проблем нейронных сетей является понимание того, что именно происходит на каждом уровне. Мы знаем, что после обучения каждый слой постепенно извлекает элементы изображения более высокого и более высокого уровня, пока последний слой по существу не примет решение о том, что показывает изображение. Например, первый слой может искать края или углы. Промежуточные слои интерпретируют основные функции, чтобы искать общие формы или компоненты, такие как дверь или полотно. Последние несколько слоев объединяют их в полные интерпретации - эти нейроны активируются в ответ на очень сложные вещи, такие как целые здания или деревья.
Итак, в основном мой вопрос заключается в следующем: не могли бы мы использовать генетические алгоритмы + нейронные сети для решения каждой проблемы NP? Мы просто создаем правильный эволюционный контекст и оставляем «природе» найти решение.
Inceptionism: углубляясь в нейронные сети
РЕДАКТИРОВАТЬ: Я знаю, что мы можем использовать Brute-Force или найти неэффективное решение во многих случаях. Вот почему я пытаюсь выделить развивающиеся искусственные нейронные сети. Как я сказал в комментарии: учитывая достаточное время и соответствующую частоту мутаций, мы могли бы найти оптимальное решение (или, по крайней мере, так я думаю).
Ответы:
Нет. Это направление вряд ли будет полезным по двум причинам:
Нейронные сети не являются «волшебными». Это способ найти шаблон. Для некоторых проблем, где есть достаточно сильные паттерны, и паттерны можно извлечь из разумного числа примеров, они могут оказаться эффективными. Но они не волшебная волшебная пыль. Тот факт, что вы можете настроить нейронную сеть, не означает, что обратное распространение обязательно найдет хороший способ решения вашей проблемы. Возможно, что нет шаблонов, которые можно найти, что шаблоны могут быть обнаружены только с неосуществимым количеством примеров, или что шаблоны существуют, но процедура обучения нейронной сети не может их найти.
Нейронные сети - это просто еще одна форма машинного обучения. Мы могли бы сделать те же замечания о SVM или случайных лесах или линейной регрессии в любой другой форме машинного обучения. Нейронные сети - это не волшебная серебряная пуля, которая решает все проблемы машинного обучения. Они примерно так же эффективны, как и другие методы машинного обучения, или для каких-то задач, возможно, немного более эффективны, но они не волшебны.
Иногда я сталкиваюсь с людьми, которые слышали лишь немного о нейронных сетях, и они уходят, думая, что нейронные сети - это ответ на все вопросы - возможно, потому, что они слышали, что «ваш мозг тоже использует нейронные сети», или они видели очень классное приложение (распознавание голоса или что-то). Но не обманывайтесь. Не верьте обману. Нейронные сети - полезный метод, но они не позволят компьютерам решать проблемы, связанные с NP, или проходить тест Тьюринга, забирать все наши задания и заменять людей компьютерами. Во всяком случае, не в ближайшее время. Это просто научная фантастика.
источник
Кажется, что другие ответы, хотя информативные / полезные, на самом деле не совсем точно понимают ваш вопрос и слишком много читают. Вы не спрашивали, будут ли нейронные сети превосходить другие методы, вы только спрашивали, могут ли они быть применены к неполным задачам NP. Ответ - да, с некоторым успехом, и это было известно на протяжении десятилетий, и существует множество исследований по этому вопросу, и оно продолжается. Это связано с гибкостью машинного обучения. Обратите внимание, что даже если они не находят точных или оптимальных решений, решения, которые они имеют, могут иметь другие желательные свойства. некоторые примеры работ:
Нейронные сети и NP-полная оптимизация; Исследование производительности по проблеме деления графов / Петерсон, Андерсон
Нейронные сети для NP-полных задач (1996) / Будинич
Поиск приблизительных решений NP-трудных задач с помощью нейронных сетей затруднен / Яо
О силе нейронных сетей для решения сложных задач / Брук, Гудман
источник
Нейронные сети на самом деле не решают NP-полных задач. То, что они делают , это решают проблемы, которые удивительно близки к NP-завершенным задачам.
Одна большая особенность нейронных сетей состоит в том, что они не обязаны каждый раз находить «правильный» ответ. Им позволено быть «неправильными». Например, вы, возможно, решаете проблему упаковки в мусорное ведро и находите решение, которое на 1% меньше идеального, и полностью удовлетворяетесь этим ответом.
Если вы устраняете требование быть на 100% правильным каждый раз, другие подходы к решению проблем работают очень хорошо. Например, многие алгоритмы планирования маршрута (например, Google Maps) должны быть NP-полными, но довольно просто найти алгоритм, который находит путь в пределах 1% от оптимального 99,9% времени. Он пытается определить результаты в тех последних 0,1% случаев, которые делают попытки завершить NP настолько дорогими.
Как это бывает, когда мы пытаемся использовать NP-полные уравнения в реальной жизни, нам не часто нужен фактический ответ. Нам часто очень удобно иметь «закрытый» ответ, хотя у нас часто нет формулировки, объясняющей, какую «близкую» метрику мы используем. Это ситуации, когда нейронная сеть может ответить на реальный вопрос, который вы хотели задать, вместо того, чтобы фактически решать проблему полного NP, которую вы задали вместо этого.
источник
Известно, что нейронные сети способны к универсальному приближению функций , но это требует обучения их по проблеме (оптимизации), которая сама по себе является NP-полной проблемой , поэтому у вас есть эволюционное обучение и SGD с обратным распространением и так далее.
Поэтому, хотя они вряд ли решат NP-полные задачи, их можно научить приближать с произвольной степенью точности функцию, которая моделирует проблему. Кроме того, даже если вам удастся оптимально решить NP-полную задачу с помощью нейронной сети, у вас все равно не будет возможности доказать, что найденное решение на самом деле является глобальным оптимумом без грубого навязывания решения (это, конечно, невозможно практически для любой практической задачи). случай использования нейронных сетей).
Ваша визуализация является точной в том смысле, что эволюционные алгоритмы (посмотрите, как аккуратный алгоритм предотвращает захват одного вида популяцией с изначально высокоэффективной структурой с использованием общей пригодности) менее пригодны, чем SGD и другие методы машинного обучения, которые могут оказаться в ловушке местные оптимумы, но они не дают доказательств того, что решение, которое они находят, на самом деле является глобальным оптимальным решением.
источник