1

Поскольку имитированный отжиг занимает слишком много времени даже для 10-15 наборов двух входов для моей многоуровневой сети прямой пересылки, как я могу использовать набор данных 100 к поезд для 8-9 входов?Очень большие наборы данных для тренировки нейронной сети с использованием имитированного отжига

Некоторые догадки:

  • Отбор проб из случайных местах. (Например: только 10 считывает данные из 200-набора спиральной задачи, используя случайные данные каждый раз)
  • Использование квантизаторы данных, чтобы отделить 200 набора данных в 20 квантованных областях, чтобы кормить 20x нейронных сетей

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

Принимая 100k квадратную сумму ошибки вывода, каждая итерация делает ее бесконечно длинной, чтобы сходиться, чем версия с 10 квадратными суммами. Потому что найти более стабильное состояние - слишком низкая вероятность. Может быть, есть способ итерации от первых данных до конца без вычисления alltogether (получение лучшего состояния ошибки только из одних данных очень просто, но как выполнить итерацию? Когда будут достигнуты другие данные, сначала будет забыто, потому что имитированный отжиг является случайное действие)

Пример для четырех наборов данных: {{0,0} {0,1} {1,0} {1,1}} ----> {0,1,1,0} - ---> easy

100k набор данных: координаты двух больших спиралей, NN пытается найти отличительность через данные. Жесткий.

Что такое основной способ?

Конвергент для первых данных, затем второй, затем ... последние данные, при последнем понижении температуры?

Сходится полностью для первых данных, понижая температуру, когда это делается, делает то же самое для других данных?

Выполнение партий более 10-15 занимает навсегда.

Можем ли мы взять сдвоенные весы двух данных и получить среднее значение этих весов и использовать их?

Например, для существ-творца Споровидных игр, когда существо имеет 40 ног, обучение ходьбя может быть трудно, потому что там будет много случайных ситуаций и обучение будет необходимо в режиме реального времени (в том же самом время с игрой)

Самое главное: моделируется отжиг, приемлемый для онлайн-обучения, если да, как? Известен любой псевдокод?

Диффузная-карта, например, обучение только второй (или два) для более чем 190 наборов данных с использованием графического процессора и отображенным (Calc) в наносекундах-микросекундах:

Перед тренировкой: enter image description here

После обучения: enter image description here

(необязательно) Интенсификация для получения границ с твердым разделом (красный и синий разделены 0.5f в этом примере) enter image description here

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

Любая бесплатная java-библиотека, которая может делать что-то вроде этих фотографий, будет оценена по достоинству.

+0

Можете ли вы уточнить свой прецедент? Имитированный отжиг - это метод оптимизации, который ищет входное пространство. Искусственные нейронные сетки являются признаками паттенов. Вы говорите, что на каждом этапе вашего имитационного отжига вы хотели бы обучить ANN по текущим параметрам отжига? Но что тогда? Какова функция фитнеса, в которой вы оцениваете качество вашего отжига? Качество признания ANN? Это идея? –

+0

Да, новый этап, новое обучение, но с некоторыми подсказками от последнего тренинга, если это возможно. Да, качество важно для меня. –

+0

Задача - это минимальная погрешность ошибок. Для 193-данных спиралей это 0,3-0,4 иш, но не может достичь этого отношения без необходимой информации о параметрах. Не удалось найти настройки параметров в Интернете. –

ответ

1

Некоторая конкретная дополнительная информация о том, над чем вы работаете и/или образцы кода, будет полезна.

Однако, вот что я предлагаю:

Похоже, у вас есть набор данных с 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 в упрощенном примере) активируется И вход является спиралью, , тогда вы также увеличили бы Силу всех подавляющих связей между нейронами, где активирован слой эйлеров, и подключенный нейрон подавлено.

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


Чтобы ответить на ваш конкретный следить за вопрос: «Так что нет никакого способа, чтобы использовать все наборы данных для обучения в режиме реального времени?»

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

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

+0

Если некоторые моменты уникальны, как NN разделяет две спирали? –

+0

Таким образом, нет возможности использовать все наборы данных для обучения в режиме реального времени? –

+0

Hi Huseyin, я только что отредактировал свой ответ, чтобы предоставить более подробную информацию, основываясь на дополнительной информации, которую вы предоставили. – mnutsch