I. What is logistic regression?
简单来说,线性回归解决的是:由已知的线性个特征输入值作为参数,通过已知数据集训练(training dataset)出一个线性回归模型(logistic regression model),从而来预测一个输出结果,这个输出结果是一个连续值。一个简单的例子:有个房主想卖掉自己的房子?,向中介联系预估其房屋的现有市值,房主给了x1, x2 = square, age。中介便通过以往卖出去的房屋数据,建立了一个线性回归模型,帮助该房主做出了较为合理的房屋估值。
II. [Theoretically] Implement a simple logistic regression model from scratch.
- define model
- define loss function
- define optimizer
当模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接用公式表达出来。这类 解叫作解析解(analytical solution)。本节使用的线性回归和平方误差刚好属于这个范畴。然而, 大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函 数的值。这类解叫作数值解(numerical solution)。
在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)在深 度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对 参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B,然后求小批量中数据样本的平均损 失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本 次迭代的减小量。
在训练本节讨论的线性回归模型的过程中,模型的每个参数将作如下迭代:
- Neural network graph
note: 在图3.1所示的神经网络中,输入分别为x1 和x2 ,因此输入层的输入个数为2。输入个数也叫特征 数或特征向量维度。图3.1中网络的输出为o,输出层的输出个数为1。需要注意的是,我们直接将 图3.1中神经网络的输出o作为线性回归的输出,即yˆ = o。由于输入层并不涉及计算,按照惯例, 图3.1所示的神经网络的层数为1。所以,线性回归是一个单层神经网络。输出层中负责计算o的 单元又叫神经元。在线性回归中,o的计算依赖于x1 和x2 。也就是说,输出层中的神经元和输入 层中各个输入完全连接。因此,这里的输出层又叫全连接层(fully-connected layer)或稠密层(dense layer)。
III. [Pratically] Implement a simple logistic regression model from scratch.
- prepare training dataset
# global variables
num_inputs = 2 # feature nums
num_examples = 1000 # sample nums
batch_size = 10
def