Уже давно хочу создать нейросеть на VBA Для чего она нужна: Ну скажем предварительно обучив, потом создать функцию которая даёт ответ по значениям в ячейках (веса скрыты на отдельных листах). Всё сделал, но нейросеть не обучается. Я и раньше делал, но весь расчёт был на листах, VBA использовал разве что только для циклов, из за этого она крайне плохо масштабировалась, и очень сложно было проверить что всё правильно, но обучение происходило нормально. Описание файла: Код нейронной сети в Microsoft Excel с использованием VBA, предсказания нескольких параметров или характеристик одновременно (несколько выходов). Количество входных и выходных нейронов, можно регулировать с помощью переменных. Вид нейронной сети - входной слой, количество скрытых слоёв два, выходной слой. Количество нейронов в слоях, можно регулировать с помощью переменных. Функция активации гиперболический тангенс. Формат входных данных числовой, нормализованный. Данные подаются на лист input ячейки в столбец A с ячейки A1 и ниже по количеству входов. Это один вектор входных данных (одна строка) Веса первого скрытого слоя на листе layer1 с столбца A для первого нейрона, B для второго, C для третьего, и так далее. В каждом столбце веса нейрона скрытого слоя. Веса второго скрытого слоя на листе layer2 с столбца A для первого нейрона, B для второго, C для третьего, и так далее. В каждом столбце веса нейрона скрытого слоя. Веса выходного слоя на листе layer3 с столбца A для первого нейрона, B для второго, C для третьего, и так далее. В каждом столбце веса нейрона выходного слоя. Веса смещения для первого слоя на листе biases в столбец A с ячейки A1 и ниже по количеству нейронов первого слоя. Каждая строка соответствует одному нейрону слоя. Веса смещения для второго слоя на листе biases в столбец B с ячейки B1 и ниже по количеству нейронов второго слоя. каждая строка соответствует одному нейрону слоя. Веса смещения для выходного слоя на листе biases в столбец C с ячейки C1 и ниже по количеству нейронов выходного слоя. каждая строка соответствует одному нейрону слоя. Выходы на лист оutput с столбца A1 для первого выхода, A2 для второго, A3 для третьего, и так далее по количеству выходов. Правильный ответ на лист оutput с столбца B1 для первого выхода, B2 для второго, B3 для третьего, и так далее по количеству выходов. Не работает Сейчас там простой пример одно входное число, оно же и должно получится на выходе после обучения, но нейронка начинает стремится к среднему сгенерированных значений, уменьшая влияние входной переменной (то есть после обучения неважно что подавать на вход, ответ практический не меняется) (как будто связи настренны неправильно, и что бы не мешали входные данные она их отрубает, а среднее это наиболее близкий результат ко всем данным)
Код хорошо документирован, всякие GPT ошибки не видят. Может кто сможет подсказать, всю голову сломал. Спасибо.
Уже давно хочу создать нейросеть на VBA Для чего она нужна: Ну скажем предварительно обучив, потом создать функцию которая даёт ответ по значениям в ячейках (веса скрыты на отдельных листах). Всё сделал, но нейросеть не обучается. Я и раньше делал, но весь расчёт был на листах, VBA использовал разве что только для циклов, из за этого она крайне плохо масштабировалась, и очень сложно было проверить что всё правильно, но обучение происходило нормально. Описание файла: Код нейронной сети в Microsoft Excel с использованием VBA, предсказания нескольких параметров или характеристик одновременно (несколько выходов). Количество входных и выходных нейронов, можно регулировать с помощью переменных. Вид нейронной сети - входной слой, количество скрытых слоёв два, выходной слой. Количество нейронов в слоях, можно регулировать с помощью переменных. Функция активации гиперболический тангенс. Формат входных данных числовой, нормализованный. Данные подаются на лист input ячейки в столбец A с ячейки A1 и ниже по количеству входов. Это один вектор входных данных (одна строка) Веса первого скрытого слоя на листе layer1 с столбца A для первого нейрона, B для второго, C для третьего, и так далее. В каждом столбце веса нейрона скрытого слоя. Веса второго скрытого слоя на листе layer2 с столбца A для первого нейрона, B для второго, C для третьего, и так далее. В каждом столбце веса нейрона скрытого слоя. Веса выходного слоя на листе layer3 с столбца A для первого нейрона, B для второго, C для третьего, и так далее. В каждом столбце веса нейрона выходного слоя. Веса смещения для первого слоя на листе biases в столбец A с ячейки A1 и ниже по количеству нейронов первого слоя. Каждая строка соответствует одному нейрону слоя. Веса смещения для второго слоя на листе biases в столбец B с ячейки B1 и ниже по количеству нейронов второго слоя. каждая строка соответствует одному нейрону слоя. Веса смещения для выходного слоя на листе biases в столбец C с ячейки C1 и ниже по количеству нейронов выходного слоя. каждая строка соответствует одному нейрону слоя. Выходы на лист оutput с столбца A1 для первого выхода, A2 для второго, A3 для третьего, и так далее по количеству выходов. Правильный ответ на лист оutput с столбца B1 для первого выхода, B2 для второго, B3 для третьего, и так далее по количеству выходов. Не работает Сейчас там простой пример одно входное число, оно же и должно получится на выходе после обучения, но нейронка начинает стремится к среднему сгенерированных значений, уменьшая влияние входной переменной (то есть после обучения неважно что подавать на вход, ответ практический не меняется) (как будто связи настренны неправильно, и что бы не мешали входные данные она их отрубает, а среднее это наиболее близкий результат ко всем данным)
Код хорошо документирован, всякие GPT ошибки не видят. Может кто сможет подсказать, всю голову сломал. Спасибо.ciiz
Всем спасибо, всё оказалось что работает. Шаг побольше, и больше шагов. Видимо затухание.
А вообще кто нибудь пытался сделать подобное, есть ли у кого реальные не для побаловаться задачи? Дело в том что я её сделал для своих задач, функциональность получилась неплохая (только не оформлено, так сказать пользоваться может только автор). Думаю может есть смысл дооформить и выложить куда нибудь в открытый доступ?
Всем спасибо, всё оказалось что работает. Шаг побольше, и больше шагов. Видимо затухание.
А вообще кто нибудь пытался сделать подобное, есть ли у кого реальные не для побаловаться задачи? Дело в том что я её сделал для своих задач, функциональность получилась неплохая (только не оформлено, так сказать пользоваться может только автор). Думаю может есть смысл дооформить и выложить куда нибудь в открытый доступ?ciiz
Сообщение отредактировал ciiz - Среда, 26.02.2025, 15:11
ciiz, очень интересно, спасибо! Давно мечтаю как-то к ним (нейросетям) подступиться (пока полный профан), а тут - раз! и законченная реализация, да еще и на знакомом языке программирования. Спасибо.
Если не трудно, порекомендуйте, пожалуйста, какой-нибудь источник информации для первоначального ознакомления с предметом, может быть, с которого сами начинали?
ciiz, очень интересно, спасибо! Давно мечтаю как-то к ним (нейросетям) подступиться (пока полный профан), а тут - раз! и законченная реализация, да еще и на знакомом языке программирования. Спасибо.
Если не трудно, порекомендуйте, пожалуйста, какой-нибудь источник информации для первоначального ознакомления с предметом, может быть, с которого сами начинали?Gustav
Даже трудно что то порекомендовать. Мне очень нравилась просто теория, а сам никак не мог подступится. Перед кодом сидел размышлял, закончить или нет, на pythone две строчки и готова нейросеть, всё думал может его подучить, и не заморачиваться с VBA. В файле уже не помню, вроде пытаюсь обучить среднему арихметическому, минимальному и максимальному значению. (генерируются случайно). В новом файле уже есть возможность выбирать функцию активации. До реализации на лист загружать данные для обучения не дошел, да и как бы файл, если что то запускать всё равно надо что то в коде менять под свою задачу (код ещё есть на листах есть). Вообще я смотрю периодический на степике Добрый, добрый ИИ ну и ещё там пару курсов, но чисто как познавательное не углубляясь в мудрёные формулы. Кстати этот код неплохо понимает Cloud 3.7, но иногда пишет что неправильная реализация, хотя там правильно, для него там примечание на русском и английском есть увидите.
Даже трудно что то порекомендовать. Мне очень нравилась просто теория, а сам никак не мог подступится. Перед кодом сидел размышлял, закончить или нет, на pythone две строчки и готова нейросеть, всё думал может его подучить, и не заморачиваться с VBA. В файле уже не помню, вроде пытаюсь обучить среднему арихметическому, минимальному и максимальному значению. (генерируются случайно). В новом файле уже есть возможность выбирать функцию активации. До реализации на лист загружать данные для обучения не дошел, да и как бы файл, если что то запускать всё равно надо что то в коде менять под свою задачу (код ещё есть на листах есть). Вообще я смотрю периодический на степике Добрый, добрый ИИ ну и ещё там пару курсов, но чисто как познавательное не углубляясь в мудрёные формулы. Кстати этот код неплохо понимает Cloud 3.7, но иногда пишет что неправильная реализация, хотя там правильно, для него там примечание на русском и английском есть увидите.ciiz
Из опыта по файлу l1 регуляризация, фигня какая то, для L2 нужен маленький очень коэффициент. Инициализация весов (нужно ждать) это я уже сам экспериментировал (напридумывал), в иннете наверное аналогий нет. Ну и всё равно под задачу код надо править. В файле обучение ну типа 5 случайных значений, должна научится их 5 выводить, с relu обучается с точностью до 0,0001
Из опыта по файлу l1 регуляризация, фигня какая то, для L2 нужен маленький очень коэффициент. Инициализация весов (нужно ждать) это я уже сам экспериментировал (напридумывал), в иннете наверное аналогий нет. Ну и всё равно под задачу код надо править. В файле обучение ну типа 5 случайных значений, должна научится их 5 выводить, с relu обучается с точностью до 0,0001ciiz
Сообщение отредактировал ciiz - Понедельник, 17.03.2025, 01:44