神经网络入门:读别人文章记录
通过一个简单分类任务来进行描述:
两层神经网络
上面可能会有点复杂,进行简单分析
去掉上面图一当中一些难懂的东西,简化变成下图:
- 输入层
- 从输入层到隐藏层
- 从隐藏层到输出层
- 分析
激活层
三种常见的激活函数:
1、阶跃函数:当输入小于等于0时,输出0;当输入大于0时,输出1。
特点:阶跃函数输出值是跳变的,且只有二值,较少使用。
2、Sigmoid:当输入趋近于正无穷/负无穷时,输出无限接近于1/0。
特点:Sigmoid函数在当x的绝对值较大时,曲线的斜率变化很小(梯度消失),并且计算较复杂。
3、ReLU:当输入小于0时,输出0;当输入大于0时,输出等于输入。
特点:ReLU是当前较为常用的激活函数。
激活函数具体计算流程?
加上激活函数的神经网络的形式图:
输出的正规化
计算公式简单来说分为三步:
- 以e为底对所有元素求指数幂
- 将所有指数幂求和
- 分别将这些指数幂与该和做商。
使用这个计算公式做输出结果正规化处理的层叫做“Softmax”层。
衡量输出的好坏
反向传播与参数优化
两个形象例子来说明参数优化的原理和过程:
迭代
有几个重要观点: - 像这种象限判断问题,完全可以用if,else语句来手工实现一个‘模型’解决。而用机器学习算法,跑数据集,来训练得到的‘模型’看似是饶了一个大圈解决了问题,实则,这正是机器学习的体现,因为你直接告诉计算机判断方法,和计算机自己去学来的,两种方法都能解决问题,但是后者将会更深刻,人何尝不是这样?当面临巨大的数据量的时候,机器学习的作用才能体现出来。
- 上面图中矩阵画反了
- 文章中为啥最大值是3,就可以判断是在第一象限呢:(3,1,0.1,0.5)可以理解为神经网络认为这个坐标在哪个象限的“可能性”,神经网络认为这个坐标位于第一象限的可能性为3、第二象限可能性为1、第三象限0.1、第四象限0.5,可能性越大,就越认为这个坐标位于对应的象限。
- 数字可以理解为在该分类的概率
- 每个隐藏层计算(矩阵线性运算)之后,都需要加一层激活层,要不然该层线性计算是没有意义的,为什么每个隐藏层都要加激活函数呢?比如说有2个隐藏层,第2个隐藏层与输出层直接相关,所以我觉得只要在第2个隐藏后加激活函数就可以了呀😓,第1个也要加吗?为什么?
因为:第一个后不加的话,两个连续的线性变换可以等价成一个线性变换。 - w是权重 b是偏重 隐藏层神经元数量自己选,w和b就类似斜率和截距
- 本篇文章讲述的输入层是一个向量(一个样本数据),训练好一个样本能有什么用呢? 现实中训练的数据是有很多个的呀,多个样本是怎么一起训练的呀? 答:我jio的训练的目的是为了得到权重w和偏重b,后续调用模型只需要输入x就能得到分类了~
- 隐藏层的层数,和每一层的神经元数量怎么选择?答:一般没有很好的方法,都是在一定范围内遍历。