Некоторая конкретная дополнительная информация о том, над чем вы работаете и/или образцы кода, будет полезна.
Однако, вот что я предлагаю:
Похоже, у вас есть набор данных с 100k строк в нем. Некоторые из этих строк данных, вероятно, дублируются. Обычно с искусственной нейронной сетью программа увеличивает силу соединения между двумя узлами сети при их активации.
Вместо того, чтобы обучить искусственную нейронную сеть с одной линией ввода в то время, возможно, быстрее стратегия будет:
Идентифицировать уникальные строки во входном и рассчитывать, как часто они происходят. Когда вы тренируете искусственную нейронную сеть, используйте подсчет этого входа как фактор для увеличения силы соединения для узлов.
Вместо того, чтобы проходить через 100 тыс. Итераций обучения сети, вы сможете пройти меньшее количество тренировочных итераций. Результат должен заключаться в том, что процесс в целом займет меньше времени и мощности процессора.
(Если вы не хотите, чтобы программно определить и подсчитать уникальные элементы в наборе данных, то вы можете использовать функцию Pivot Table Microsoft Excel, чтобы сделать это в течение нескольких минут.)
Надеется, что это помогает !
Редактировать: Я добавил следующий текст в качестве редактирования, потому что он был слишком длинным для добавления в качестве комментария.
Благодарим за добавление дополнительной информации о проблеме, которую вы пытаетесь решить. Это очень сложный вопрос, и нет простого ответа.
В искусственной нейронной сети есть Узлы, которые могут быть активированы. Тогда есть соединения между узлами. Эти соединения могут работать либо для активации другого узла, либо для подавления другого узла. Наконец, Сила этих соединений может расти или ослабевать на основе обратной связи. Другими словами, каждое соединение имеет фактор, который описывает его Силу. Независимо от того, активирован ли узел другими узлами, зависит от суммы прочности подключений к нему, , где соединение относится к уже активированному узлу и где прочность соединения является либо положительной, либо отрицательной, как определено ли соединение активируется или подавляется.
Идея искусственных нейронных сетей заключается в том, что вместо того, чтобы точно определять, как они работают, вы должны установить основные правила, а затем обучить его, чтобы вырастить инструмент органично. Реальность такова, что существует некоторая конструкция, которая должна идти в пути, когда искусственные нейроны соединяются друг с другом.
Я упомянул, что для идентификации 3D-спирали требуется очень сложная искусственная нейронная сеть. При создании базового дизайна легче определить, что будет делать основной рабочий конечный продукт, а затем построить его.
В частности, давайте определим, как искусственная нейронная сеть будет смотреть поперечное сечение спиральной линии, чтобы определить, является ли это строкой. Одномерное поперечное сечение линии может состоять из трех узлов (представьте себе три пиксела рядом). Представьте это как три переменные в массиве, где значение может быть либо 0 (не активировано), либо 1 (активировано). Назовем эти узлы 1a, 2a и 3a.
Мы хотим, чтобы наш мини-пример искусственной нейронной сети рассмотрел эти три пикселя и определил, есть ли линия посередине. Линия в середине может быть определена как: средний узел активирован с двумя внешними узлами, не активированными (белая линия на черном фоне), или два внешних узла активированы, а средний узел не активирован (черный линия на белом фоне).
Затем нам нужен второй уровень узлов, чтобы определить, является ли поперечное сечение белой линией или черной линией. Этот слой нуждается в двух узлах. Назовем их узлами 1b (белая линия) и 2b (черная линия).
Наконец, нам нужен третий и последний уровень с одним узлом. Этот узел должен активироваться, если строка идентифицирована. Назовем этот узел 3.
Теперь давайте определим соединения между узлами.
Узел 2a должен иметь Активирующее соединение с узлом 1b. Узел 2a должен иметь подавляющее соединение с узлом 2b. Узлы 1a и 3a должны иметь подавляющее соединение с узлом 1b. Узлы 1a и 3a должны иметь Активирующее соединение с узлом 2b. У узлов 1b и 2b оба должны иметь Активирующее соединение с узлом 3.
Если вы помните, поперечное сечение линии обнаруживается, если узел 3 активируется. Активация узла 3 означает, что эта конкретная точка в данных выглядит как поперечное сечение линии.
Вот как некоторые данные могут быть обработаны с помощью этой функции нейронной сети, например:
** Когда поперечное сечение линии присутствует
0,1,0 (узел 1 не активировано; узел 2 активируется, узел 3a не активирован)
В этом примере набора данных активируется только узел 2a. Это вызовет активацию, подключенную к узлу 1b, и подавление соединения с узлом 1a.
Во втором слое нейронной сети активируется узел 1b. Это активирует активацию, подключенную к узлу 3.
Активация узла 3 означает, что в рассматриваемой точке есть поперечное сечение линии.
** Когда поперечное сечение линии нет
0,1,1 (узел 1о не активирован; узел 2о активируются; узел 3 активируются)
Узлы 2 и 3 активируются в этом примере набора данных. Узел 2a инициирует активацию, подключенную к узлу 1b, и подавление соединения с узлом 1a. Узел 3a вызовет подавление, подключенное к узлу 1b, и активационное соединение с узлом 1a.
Ни один из узлов 1b или 2b не активируется, , потому что соединения с активизацией и подавлением будут балансировать друг друга (при условии, что Силы соединений равны).
Узел 3 не активируется, что указывает на отсутствие сегмента линии в соответствующем месте.
Это был пример того, как будет выглядеть очень маленькая часть функционирующей нейронной сети в этой проблеме.
В природе есть миллионы нейронов, посвященных такой проблеме во многих слоях. Было бы активировать и подавлять соединения, которые изначально расположены случайным образом между нейронами в соседних слоях.
Для обучения нейронной сети вы активируете слой 1 на основе ввода данных. Если конечный узел (уровень 3 в упрощенном примере) активируется И вход является спиралью, , тогда вы увеличите Силу всех Активирующих соединений между активированными нейронами. Если конечный узел (уровень 3 в упрощенном примере) активируется И вход является спиралью, , тогда вы также увеличили бы Силу всех подавляющих связей между нейронами, где активирован слой эйлеров, и подключенный нейрон подавлено.
Постепенно после достаточной подготовки идея состоит в том, что значения соединений в вашей нейронной сети будут естественным образом развиваться, чтобы идентифицировать спираль.
Чтобы ответить на ваш конкретный следить за вопрос: «Так что нет никакого способа, чтобы использовать все наборы данных для обучения в режиме реального времени?»
Да, вы можете тренировать наборы данных в реальном времени. Я понял, что ваш первоначальный вопрос был тем, что является более быстрым способом обучения действительно большому набору данных.
Если ваша программа использует средневзвешенное значение для всех тренировочных занятий для определения Силовых связей нейронов, то знания о предыдущих входных данных для обучения уже включены в сеть.
Можете ли вы уточнить свой прецедент? Имитированный отжиг - это метод оптимизации, который ищет входное пространство. Искусственные нейронные сетки являются признаками паттенов. Вы говорите, что на каждом этапе вашего имитационного отжига вы хотели бы обучить ANN по текущим параметрам отжига? Но что тогда? Какова функция фитнеса, в которой вы оцениваете качество вашего отжига? Качество признания ANN? Это идея? –
Да, новый этап, новое обучение, но с некоторыми подсказками от последнего тренинга, если это возможно. Да, качество важно для меня. –
Задача - это минимальная погрешность ошибок. Для 193-данных спиралей это 0,3-0,4 иш, но не может достичь этого отношения без необходимой информации о параметрах. Не удалось найти настройки параметров в Интернете. –