Хранение памяти нейронной сети/машинного обучения - программирование
Подтвердить что ты не робот

Хранение памяти нейронной сети/машинного обучения

В настоящее время я пытаюсь настроить Neural Network для извлечения информации, и я довольно свободно говорю о (основных) концепциях Neural Networks, за исключением того, что, похоже, меня озадачивает. Вероятно, это довольно очевидно, но я не могу найти информацию об этом.

Где/Как Neural Networks хранит свою память? (/Машиноведение)

Существует довольно много информации, доступной в Интернете о Neural Networks и Machine Learning, но все они, похоже, пропускают память. Например, после перезапуска программы, где она находит свою память для продолжения обучения/прогнозирования? Многие примеры онлайн, похоже, не сохраняют память, но я не могу представить, что это "безопасно" для реального/широкомасштабного развертывания.

У меня сложная формулировка вопроса, поэтому, пожалуйста, дайте мне знать, если мне нужно будет немного подробнее. Спасибо,


ИЗМЕНИТЬ: - следить за ответами ниже

Каждая нейронная сеть будет иметь связанные с ними весовые коэффициенты. Эти весовые коэффициенты корректируются во время тренировки Нейронная сеть.

Это именно то место, где я борюсь, как мне/следует ли я видеть эту вторичную память? Это как RAM? это не кажется логичным.. Причина, по которой я спрашиваю, потому что я не встречал пример онлайн, который определяет или указывает эту вторичную память (например, в чем-то более конкретном, таком как XML файл или, возможно, даже огромный массив).

4b9b3361

Ответ 1

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

Рассмотрим трехслойный многослойный персептрон (полностью подключенный), который имеет 3, 8 и 5 узлов на входном, скрытом и выходном уровнях соответственно (для этого обсуждения мы можем игнорировать входы смещения). Тогда разумный (и эффективный) способ представления необходимых весов состоит из двух матриц: матрицы 3x8 для весов между входным и скрытым уровнями и матрицы 8x5 для весов между скрытым и выходным уровнями.

В этом примере вам нужно сохранить веса и форму сети (количество узлов на слой). Есть много способов сохранить эту информацию. Это может быть файл XML или определяемый пользователем двоичный файл. Если вы используете python, вы можете сохранить обе матрицы в двоичном файле .npy и закодировать сетевую форму в имени файла. Если вы внедрили алгоритм, вам нужно сохранить сохраненные данные. Если, с другой стороны, вы используете существующий пакет программного обеспечения для машинного обучения, он, вероятно, имеет свои собственные функции ввода-вывода для хранения и загрузки обучаемой сети.

Ответ 2

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

У конкретной библиотеки или структуры может быть конкретный ответ о долговременном хранении, но если вы откатываете свой собственный с нуля, то это зависит от вас.

Например, почему бы просто не написать обученные веса и топологию в файле? Что-то вроде YAML или XML может служить в качестве формата.

Кроме того, хотя мы говорим о состоянии/хранилище и нейронных сетях, вам может быть интересно изучить ассоциативную память.

Ответ 3

Каждая нейронная сеть будет иметь связанные с ними весовые коэффициенты. Эти весовые коэффициенты корректируются во время тренировки нейронной сети. Я полагаю, что вы сомневаетесь в сохранении этих весов. Ну, эти значения хранятся отдельно во вторичной памяти, чтобы их можно было сохранить для будущего использования в нейронной сети.

Ответ 4

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

Давайте сравним это с вашим мозгом. Когда вы ощущаете сахар, ваши вкусовые рецепторы вашего языка являются входными узлами, которые считывают химические сигналы и передают электрические сигналы в мозг. Затем мозг определяет вкус, используя различные комбинации электрических сигналов.

Нет таблиц поиска. Нет первичной и вторичной памяти, только короткой и долгосрочной памяти.

Ответ 5

На это можно ответить в два этапа:

  • Что такое "память" в нейронной сети (именуемая NN)?

По мере обучения нейронной сети (NN) она строит математическую модель который сообщает NN, что давать в качестве вывода для конкретного ввода. Думать о том, что происходит, когда вы тренируете кого-то, чтобы говорить на новом языке. человеческий мозг создает модель языка. Аналогично, NN создает математическую модель того, что вы пытаетесь учить. Он представляет собой отображение от входа к выходу в виде ряда функций. Эта математическая модель это память. Эта математическая модель представляет собой вес различных краев в сети. Часто NN обучается, и эти веса/соединения записываются на жесткий диск (XML, Yaml, CSV и т.д.). Всякий раз, когда NN необходимо использовать, эти значения считываются и сеть воссоздается.

  1. Как вы можете забыть свою память о сети?

Подумайте о том, кто учил два языка. Скажем, человек никогда не говорит на одном из этих языков в течение 15-20 лет, но каждый день использует другой. Очень вероятно, что каждый день будут изучаться несколько новых слов, и многие слова о менее частых забытых языках. Критическая часть здесь заключается в том, что человек "учится" каждый день. В NN аналогичные явления можно наблюдать путем обучения сети с использованием новых данных. Если старые данные не были включены в новые образцы обучения, то базовая математическая модель изменится настолько, что старые данные обучения больше не будут представлены в модели. Возможно, чтобы NN "забыл" старую модель, изменив процесс обучения. Однако это имеет побочный эффект, что такой NN не может изучать полностью новые образцы данных.