程序员的AI-1
线性回归
一、假设解决的是可以通过线性解决的二分问题
$$
y = wx+ b
$$
二、训练的核心就是计算w和bias
这两个公式来源于线性回归算法。
获得真实值y与预测值y’的偏差,却并不直接用这个偏差来计算和调整w、bias,而是乘以一个较小的参数lr。我们希望每次都对w和bias进行微调,通过多次迭代和调整后让w和bias接近最优解(Optimized Value),所以我们希望每次调整的幅度都不要太大。这是一个较难两全的事情:lr值过小可能会导致训练时间过长,难以在实际实验中判断是否收敛;lr值过大则容易造成步长过大而无法收敛。
$$
Δw=lr⋅(y−y′)⋅x
$$
$$
Δbias=lr⋅(y−y′)
$$
感知器
为了理解神经网络、神经元、感知器、激活函数、损失函数等概念,先通过简单线性回归问题区分正负数的示例解释感知器。
神经网络由神经元构成,而感知器指的是神经元的工作方式
激活函数
模型训练
1 |
|
模型训练的核心代码。根据iterations的设定,我们用同样的训练数据反复训练给定的次数,在每一次训练中都根据每一对数据对参数进行调整,即模型训练。
回归总结
神经网络用Python进行的具体实现。当然,这个例子是非常简单的:
我们只处理单个输入;
分类也仅仅是很简单的二分;
我们的激活函数是一个非常直接的二分输出。
对于以上简单的二分感知机并没有用到损失函数,激活直接返回成功与失败。
上面的简单的线性问题和二分输出几乎很难实际应用,所以人们提出了Adaline激活的概念,即激活函数和输入一致。
激活函数的输出就是一个连续值,而不是简单的二分。这就要提出两个重要的概念:损失函数和梯度下降。
核心思想
一、激活算法
$$
y = wx+ b
$$
二、计算损失
$$
y−y′
$$
三、调整权重
$$
Δw=lr⋅(y−y′)⋅x
$$
$$
Δbias=lr⋅(y−y′)
$$
任何模型训练,其关键在于:
- net_input : 输入-计算神经元的输入值
- activation : 激活-计算神经元的输出值
- cost : 损失-计算损失函数的值 - 通过损失函数的梯度调整权重
- update_weights : 更新权重