https://www.boyuai.com/elites/
1) 第一次打卡内容(2月12日-14日)截止打卡时间:2/14-22:00
Task01:线性回归;Softmax与分类模型、多层感知机(1天)
Task02:文本预处理;语言模型;循环神经网络基础(1天)
讲座 + 休息(1天)
1、线性回归
当模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解(analytical solution)。本节使用的线性回归和平方误差刚好属于这个范畴。然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。
优化函数 - 随机梯度下降
两步:
(i)初始化模型参数,一般来说使用随机初始化;
(ii)我们在数据上迭代多次,通过在负梯度方向移动参数来更新每个参数。
学习率: η 代表在每次优化中,能够学习的步长的大小
批量大小: B 是小批量计算中的批量大小batch size
2、Softmax与分类模型
2.1 softmax运算符(softmax operator)解决了什么问题?
softmax运算符实际上完成的是输出结果的归一化,解决了直接使用输出层的输出有两个问题:一方面,由于输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。例如,刚才举的例子中的输出值10表示“很置信”图像类别为猫,因为该输出值是其他两类的输出值的100倍。但如果o1=o3=103o1=o3=103,那么输出值10却又表示图像类别为猫的概率很低。另一方面,由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量。
解决方法是将输出值变换成值为正且和为1的概率分布。
实现这一点的数学运算是对输出结果作指数运算exp(),再分别除以输出结果指数运算的相加的和。
2.2 交叉熵损失函数(cross entropy)
是一种用来衡量两个概率分布差异的测量函数,交叉熵(cross entropy)只是其中之一,最常用。优于平方损失估计。
数学运算:取对数log
这里看文字介绍有些不理解。
讨论摘取:
softmax函数为什么要用e的指数形式归一化呢,如果用其他形式可不可以呢(例如直接线性归一化,带入幂函数归一化等),指数形式又有什么好处呢?目前看来,无论用那种函数形式归一化都能达到归一的目的,但是指数形式在由于导数随着输入变大而变大,可以把较大的输入域较小的输入拉开得更大,两个较大的输入之间也可以拉开距离,有利于将最大的概率值筛选出来。那么如果基于归一化和筛选两个特性,只要底大于1的其他指数函数也可以实现这个效果。
softmax函数用'e'还可以保证其为正,当然满足‘e'函数的类似函数很多,对于不同的实际问题,’e'函数不一定是最优的。
在之前Thorray的提问中有简要的原因回答,
https://www.boyuai.com/elites/course/cZu18YmweLv10OeV/video/-m1RzLMiaJHiHvnuIWFwc#comment-wl-7TK1GHcYp11IliwPLs
使用e的指数形式归一化是由于假设未知来源误差服从高斯分布,化简的结果得到的,如果说明数据与理论标准函数之间的偏差服从其他的概率分布,最后选取得到的归一化函数就不一定是e的指数形式,并不是随便选的。
3、多层感知机(multilayer perceptron,MLP)
全连接层只是对数据做仿射变换(affine transformation),而多个仿射变换的叠加仍然是一个仿射变换。激活函数(activation function)是一类非线性函数,用于对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。
ReLU函数,Sigmoid函数,tanh函数
讨论摘取:
ReLU在x<0部分会有梯度消失问题,但只有一半;所以后续有Leaky ReLU来缓解这个问题。但是相比于sigmoid梯度最大值0.25并且大部分区域都非常小,ReLU只有一半区域还是缓解很多。
sigmoid的梯度消失是指输入值特别大或者特别小的时候求出来的梯度特别小,当网络较深,反向传播时梯度一乘就没有了,这是sigmoid函数的饱和特性导致的。ReLU在一定程度上优化了这个问题是因为用了max函数,对大于0的输入直接给1的梯度,对小于0的输入则不管。但是ReLU存在将神经元杀死的可能性,这和他输入小于0那部分梯度为0有关,当学习率特别大,对于有的输入在参数更新时可能会让某些神经元直接失活,以后遇到什么样的输入输出都是0,Leaky ReLU输入小于0的部分用很小的斜率,有助于缓解这个问题。
今天用时约3小时,电脑anaconda方式安装pytorch失败,原因可能为网速或电脑配置;云平台运行代码失败,原因为自己代码能力较差 。
个人感觉这次的学习活动组织的很好,学习平台中的内容难度和深度适中,有一定的奖励,并且以小组的形式互相帮助和激励。自己这次一定要坚持学完,不能像之前半途而废。
附群通知内容。
@所有人
【第一次打卡】截止时间⏰2/14晚22:00,注意️未按时打卡会被抱出群噢!~
【学习内容】Task01-Task03,详情请阅学习手册 https://shimo.im/docs/9CvKXJxP3xqGHwgh/
【要求】
1.根据https://shimo.im/sheets/vGcRKCjXkDVKR8RY/MODOC/,修改群昵称:编号-队名-昵称
2.自行选择平台(CSDN博客,Github,知乎,公众号或其他可共享链接)写学习笔记、心得、总结问题、难点和代码等(内容不限)
3.填写表单打卡 https://jinshuju.net/f/rOtpg9
———— 聊天记录搜索666,查看所有群公告