程序员的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
2
3
4
5
6
7
8
def fit(self, X, Y):
for _ in range(self.iterations):
for i in range(len(X)):
x = X[i]
y = Y[i]
update = self.lr * (y - self.predict(x))
self.w += update * x
self.bias += update

​ 模型训练的核心代码。根据iterations的设定,我们用同样的训练数据反复训练给定的次数,在每一次训练中都根据每一对数据对参数进行调整,即模型训练。

回归总结

​ 神经网络用Python进行的具体实现。当然,这个例子是非常简单的:

  1. 我们只处理单个输入;

  2. 分类也仅仅是很简单的二分;

  3. 我们的激活函数是一个非常直接的二分输出。

  4. 对于以上简单的二分感知机并没有用到损失函数,激活直接返回成功与失败。

​ 上面的简单的线性问题和二分输出几乎很难实际应用,所以人们提出了Adaline激活的概念,即激活函数和输入一致。

激活函数的输出就是一个连续值,而不是简单的二分。这就要提出两个重要的概念:损失函数和梯度下降。

核心思想

​ 一、激活算法
$$
y = wx+ b
$$
​ 二、计算损失
$$
y−y′
$$
​ 三、调整权重
$$
Δw=lr⋅(y−y′)⋅x
$$

$$
Δbias=lr⋅(y−y′)
$$

任何模型训练,其关键在于:

  1. ​ net_input : 输入-计算神经元的输入值
  2. ​ activation : 激活-计算神经元的输出值
  3. ​ cost : 损失-计算损失函数的值 - 通过损失函数的梯度调整权重
  4. ​ update_weights : 更新权重


程序员的AI-1
http://blog.uanet.cn/AI/程序员AI入门教程/程序员的AI-1.线性回归.html
作者
dnsnat
发布于
2025年2月17日
许可协议