神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火
LMS算法和Rosenblatt感知器算法非常想,唯独就是去掉了神经元的压制函数,Rosenblatt用的Sgn压制函数,LMS不需要压制函数,两者一样是只有单个神经元。
LMS算法信号流图
算法小结:
然后在说下退火:
#pragma once
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int gnM = 0; //训练集空间维度
int gnN = 0; //突触权值个数
double gdU0 = 0.1; //初始学习率参数,用于退火,前期可以较大
double gdT = 1; //控制退火用的开始降温的时间点
double gdN = 0; //当前工作时间(神经网络学习次数)
//退火
//U=U0/(1+(N/T))
double GetNowU() {
gdN++;
//cout<< gdU0 / (1.0 + (gdN / gdT))<<endl;
return gdU0 / (1.0 + (gdN / gdT));
}
void LMSInit(double *dX, const int &nM, double *dW, const int &nN, const doubl