Рыночный этикет или правила хорошего тона на минном поле - страница 36
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В такой круг можно вписать любую прямую линию, под любым углом к горизонтали.
Ну, ну!
Как видишь не под любым! - А под нужным нам...
Теперь похоже!
А где обещенное обучающее облако?
Навесь масштабную сеточку на график и скажи, чему у тебя равен тангенс угла наклона для прямой.
Это были картинки полученные из первой разности пятичленного синуса по Х и прогноза сетки со случайными весами(начальная установка весов +/-1) по Y. Остальное еще делаю, скоро будет
Ну, ну!
Как видишь не под любым! - А под нужным нам...
Тады канечна.
Ну вот, готово. Здесь нет только обучающей выборки, поскольку обучающая выборка это и есть вектор Х. Т.е. нанести её на график, конечно можно, но это будет прямая, пересекающая график под углом 45" . Нейрон обучался тремя выборками:
1. Простая первая разность 5sin - вектор Y_simpl, зеленый цвет (соответствующая мнк)
2. Гипертангенс первой разности 5sin - синий цвет
3. Бинарные входы (по 5sin) - фиолетовый цвет
Тангенсы прямых такие:
И все-же что-то не так. Или я не понимаю задания которое ты дал.
Этот нейрон до обучается на каждом новом отсчете вектора данных Х, этот же вектор испльзован в качестве оси абсцисс графика. Если вывести его на ординату...? Зачем?
Кроме того я заметил, что если рабочий лист с одними и теми же данными пересчитать результаты будут другими. Разве так должно быть? Т.е. результаты очень сильно зависят от начальных установок весов.
Далее, когда я не обучал нейрон на каждом шаге, а просто прогонял его по вектору данных со случайно выбранными исходными весами, получались рисунки с облаком в центре(иногда).
Теперь получается то, что ты видишь. Вот еще одна картинка.
На всякий случай цепляю листинг Маткада
Ну вот, готово. Здесь нет только обучающей выборки, поскольку обучающая выборка это и есть вектор Х. Т.е. нанести её на график, конечно можно, но это будет прямая, пересекающая график под углом 45" .
У тебя есть обучающий вектор длины - n на котором НС тренируется распозновать всего один-единственный отсчёт - n+1. Имеется набор статистического материала N>100, который формирует обучающую выборку (точнее, набор примеров того, как НС обучалась) длиной N отсчётов (это не обучающий вектор, а набор таковых, получаемых из имеющегося в нашем распоряжении синусного ряда, путём сдвига его на один отсчёт в право каждый раз и до N). Таким образом, мы имеем N значений по которым НС обучалась (это n+1 элементы обучающих векторов) и так же имеем N значений того, как она им обучилась. Поставь теперь их соответственно по осям абсцисс и ординат и получишь искомое облако, которое характеризует процесс обучения. Понятно, что это облако не будет иметь наклон 45 градусов. Это следует из того, что число весов сетки - w много меньше оптимальной длины обучающего вектора P=w*w/d и как следствие, система уравнений, которые решает НС по поиску оптимальных весов, является переопределённой и имеет бесконечное число решений. Поэтому ищется приближённое, которое является оптимальным в смысле минимизации квадрата ошибки обучения для всех уравнений. Если бы длина обучающего вектора была равна числу весов, вот тогда можно было бы ожидать 100% обучения сети, но это не является оптимальным в смысле способности сети обощать накопленные знания в будущем и приводит к грандиозным ошибкам на тестовой выборке. Правильно обученная сетка покажет на "облачной" диаграмме угол наклона обучающей выборки близким к углу наклона на тестовой выборке. И напротив, переобученная сеть покажет угол в 45 градусов для обучающего облака с мизерной дисперсией и нулевой угол с бесконечной дисперсией для тестового облака. Именно такой результат получается, если пытаться точно решать систему линейных алгебраических уравнений для одинокого персептрона. Я уже выше говорил об этом. Именно по этой причине очень удобно пользоваться облачной диаграммой при отладке сети (чего невозможно реализовать на MQL).
Тот факт, что у тебя угол наклона меняется от эксперимента к эксперименту и становится даже отрицательным, однозначно говорит о том, что твоя девушка живёт своей тайной жизнью и не обучаема. Нужна лоботомия:-)
P.S. Сохраняй cdjb файлы с расширением *.mcd для 2001i MathCad, иначе я их прочитать не могу.
Сейчас гляну.
Вот, кстати, как отрабатывает моя девушка 5-синусный ряд:
Это двуслойная НС-ка с двумя действительными входами (не считая постоянного смещения), k=2, у которой в скрытом слое 2 нейрона с нелинейной активацией и одним линейным нейроном (без функции активации) на выходе. Красным показана обучающая выборка, синим - тестовая (предсказания). Переобучение на каждом отсчёте. Статистика - 200 экспериментов. Тангенсы углов приведены на поле графика.
Я у тебя много чего по простоте душевной не понял в коде. Но, из того, что удалось осмыслить, не соответсвует моим представлениям следущее:
У тебя точно должна быть накопительная сумма по всей обучающей эпохе Р по квадратам отклонений S[k] . То, что я вижу, это просто переобозначение переменных. Нет первоначальной инициализации весов случайными числами.
Я так и не понял что за подпрограмма тобой введена method() и ranif() и где её смотреть?
Чуть упростил под себя твой код (см. файл).
Все подробнейшим образом прокомментировал, по ходу дела пару ошибок устранил
Вот чего рисует:
Файл прицепляю в трех форматах 11, 12 и 13(*.xcmd)
Сейчас смотрю твои испраления... Вообще то надо мне было сначала посмотреть на исправления, а потом уж комментировать... -:)
Над тем, что ты написал двумя постами выше я думаю. Мне главное - понять, чтобы "картинка" в голове сложилась, тогда я все сделаю.
Та картинка, что была до сих пор оказалась не вполне верной - неправильно я понял "обучение на каждом шаге", а новой пока нет.