1. 机器学习的本质就是找到一个人类写不出来的复杂函数
2. 深度学习使用的是类神经网络,输入可以是向量、序列、矩阵,输出可以是数值(regression)、类别(classification)、文本图片
3. regression 和 classification 只是很小一部分,还有structured learning
4. 机器怎么找一个函数?
a. 先猜测一下函数的基本形式
b. 定义Loss函数
c.梯度下降法
局部最大值问题实际上是一个伪问题,并不会真的影响我们去找全局最大值
5. 用一系列分段函数去模拟折线,进一步模拟曲线
对于分段函数,我们可以采用sigmoid函数来近似
故而,对于原始的线性模型,我们可以对其进行更新:
括号例得内容我们可以用矩阵表示:
同理,将整个函数写出矩阵形式:
其中,参数x是我们输入的feature,剩下的都是未知参数:
此时,未知参数的表示和更新如下:
在实际学习过程中,我们将整个样本分成了一个个batch,先取第一个batch开始,计算出batch1的Loss,记为L1,计算出此时L1的梯度。初始的θ0是随机选取的,我们使用L1计算出的梯度g对其进行更新。以此类推,我们可以对剩余的batch挨个进行这样的操作,依次对θ进行更新。 当用所有batch更新一次θ时,称为过了一次epoch。 除了sigmiod函数,我们也可以用两个Relu去替代一个sigmoid:
再进一步,我们可以重复以上过程,增加神经网络的层数:
随着网络层数的加深,在训练集上的表现更好,但在测试集上的表现会变差,原因在于过拟合(overfitting)