Делюсь проектом с построением простейшей нейросети. Повторил пример взятый из этой стати https://mattmazur.com/2015/03/17/a-s...ation-example/, на скрине видно приблизительное повторение результатов описываемых в предпоследнем абзаце
Вид для печати
Делюсь проектом с построением простейшей нейросети. Повторил пример взятый из этой стати https://mattmazur.com/2015/03/17/a-s...ation-example/, на скрине видно приблизительное повторение результатов описываемых в предпоследнем абзаце
А в чём суть? Как система эта работает, что должно происходить?
Стандартная задача - это регулирование температуры обратной воды по температуре наружного воздуха согласно температурного графика.
Как решить эту задачу при помощи нейросети ?
Что значит "регулятор должен быть 35" ? Выходов должно быть два и они управляют трехпозиционным клапаном, т.е. подают на него импульсы, длительность которых пропорциональна рассогласованию. Обычно это делается при помощи ПИД-регулятора.
Как это сделать при помощи нейросети ?
Там "проблема" и в том, что тов. capzap делал "обучение" модели на самом ПЛК.
Это, вообще говоря, сомнительный подход. Ну, можно посомневаться в целесообразности использования ПЛК для шага обучения.
Скорее всего, учить нужно на нормальном ПК (можно оперировать гораздо большими объёмами данных, строить графики), а полученную модель (коэффициенты) загружать в ПЛК.
В двух словах, подход такой:
1) Нужно собрать много-много данных о значениях разных параметров. Например: температура котла, температура подачи, температуры каждой батареи, скорость ветра, направление ветра, потребление электричества, дату, положение клапана (!)
В итоге, получится источник вида
Дата,параметр1,параметр2,параметр3,...
2) Потом придумать "каким алгоритмом машинного обучения пользоваться". Можно попробовать все по очереди, но если разбираться, то сразу понятно, что для задач одного типа лучше работают одни, а лучше другие
3) Допустим, определились с алгоритмом. И, например, это будет "нейронная сеть". Берём весь набор измеренных величин (ну или 50% из него), и "обучаем" нейросеть предсказывать "положение клапана". Ну, как вариант, можно предсказывать не "положение клапана" (открыт-закрыт), а например, в % (% открытости за минуту)
4) В результате шага 3 (обучения) будут получены коэффициенты нейросети. Их можно взять, зашить в ПЛК программу, и эта самая ПЛК программа будет брать результаты уже реальных измерений (температур, скоростей ветров и т.п.) и генерировать значение для "положения клапана"
Как-то так.
Не рекламы ради, но как раз 4-го марта в Новосибирске Алексей Зиновьев будет рассказывать "введение в машинное обучение".
Для "понимания", на мой взгляд, один из самых простых примеров -- предсказание того, "выжил бы человек или нет, если бы он плыл на Титанике".
На шаге 1 есть перечень пассажиров с признаками "возраст, пол, ещё что-то, выжил-нет"
На шаге 2 можно взять алгоритм "дерево принятия решения"
На шаге 3 "обучение" состоит в том, что мы скармливаем данные о всех пассажирах, а алгоритм строит дерево в духе
Смысл в том, что цепочка IF'ов генерируется автоматически, и размер этих if'ов гораздо меньше общего размера входных данных. Да, могут быть ошибки, но полученный алгоритм может предсказывать результат в том числе и для тех параметров, которые не встречались в исходной выборке.Код:IF пол=Ж THEN
СПАСЛАСЬ;
ELSIF возраст>9.5 THEN
УМЕР;
ELSE ...
END_IF;
На шаге 4 берём эту цепочку IF'ов, запихиваем в ПЛК и он может предсказывать "спасётся ли пассажир, если пол у него такой-то и возраст такой-то"
Как можно грамотно пользоваться прототипом, да ни как, изучать предмет да строить свою сеть. Конкретно в этом примере входные данные располагаются в hiddenLayer в массиве mINPUT, выходные в outputLayer в массиве mOUTS, остальное обычно не заполняется, там при инициализации должны быть случайные величины, о них на форуме должна быть целая тема, какой ГСЧ для этого использовать. У меня же вставлены веса какие используется в примере по ссылке