误差函数
-
首先,我们先说两个生活中的例子
- 第一个是下楼梯,比如你在一个天桥上有四个方向的 楼梯,每个有20阶。你需要到达平底即可,那么这四个方向是没有区别,从哪个下去都会消耗一样的体能和一样的时间
- 第二个例子是下山,你站在华山顶,现在同样要到达平面,有很多办法,做索道啊走栈道啊(恐怖至极甚重啊兄弟),或者一步一个脚印走下来。有句话说的好,“世上本无路,走的人多了便成了路”
那你呢,要是穷逼还怕死,就只能走路喽,当然我知道你也不傻,肯定不会选择一条直线走下去啊,这走的每一步肯定都和你周围的环境有关系,选择最佳的方向,适当调整步长之类的,我想有个坑你也不至于非得踩下去吧。好,就这样,大家下山了,每个人选的方式和走的路不同,肯定下山的时间和消耗的体力也就不同了
-
这两个例子看完了,我要开始说这个误差函数有什么关系了
误差 Error 都知道,现实情况和事实啊正确数据等等的偏差嘛,而之前我说的你在天桥或山顶 到 地面的距离 就是误差!
你想要回到平地,就是在想办法减小误差 -
下楼梯这中方法,每一个台阶就像是一个归类错误的点,每下一个台阶就像之前那个划分点的线,把一个归类错误的点放回了出于自己的地方。显而易见,对于这种离散的点,我们很难判断到底怎么走啊,就是我可能从天桥西边做两个感觉咋还没下去,我再回去东边方向走两节。
我就是想说啊,这个离散的点啊真的很讨厌 -
爬山可就不一样了,对于这种连续又没有规则的山路,我就可以选择很多很多了。这就像是连续数据形成的“误差山”,我可以一点点来,舒舒服服走下去。(后面好好说)
-
现在我们来说说,非要用离散数据呢
一个点,在坐标轴上就是一个点。太小了,我照顾了这个点不能照顾那个真的很烦,所以啊,我就把这个圆画大一点吼吼,两个好处 :
- 之前下图的误差不就是有几个点不在指定区域吗(此图为2),现在可一样了,我把你放大了,我就用面积衡量你,说实在的,就是加上你离我的三八线是近是远的条件喽
2.有点的实在是分不到自己的区域,看看要是你半个身子在正确的地方,你就让让红的嘛,不是每个人都能满意嘛,男人多点承让,一定能成大事~!(我们女生也就不用成天生气了)
总之,我现在不要非零即一,我需要0-1中间的百分率aaaaaa,毕竟喜欢和不喜欢谁也说清楚啊,我需要你告诉我你多么喜欢我or多么不喜欢我!
交叉熵
image.pngimport numpy as np
# Write a function that takes as input two lists Y, P,
# and returns the float corresponding to their cross-entropy.
def cross_entropy(Y, P):
Y = np.float_(Y)
P = np.float_(P)
return - np.sum(Y*np.log(P)+(1-Y)*np.log(1-P))
神经网络
就像神经元一样,两个神经元转出来的内容,再经过总和,得到一个好的结果
下图所示:
根据不同情况,对线性模型进行中和吧。
每个线性的不是有输出吗,把他当做是输入,在进行权值相乘加上偏量,
image.png
经过s函数,变成0-1之间的数,然后就有了下图的多层
image.png
-
多层级
并非所有神经网络都看起像上面的那样。可能会复杂的多!尤其是,我们可以执行以下操作:
向输入、隐藏和输出层添加更多节点。
添加更多层级。
我们将在后面看看这些变化的效果。
image.png
前向反馈
就是根据提供的权值和偏移量进行输出,然后和真实结果相比较得到误差函数
image.png image.png
反向传播
现在,我们准备好训练神经网络了。为此,我们将使用一种方法,叫做反向传播。简而言之,反向传播将包括:
- 进行前向反馈运算。
- 将模型的输出与期望的输出进行比较。
- 计算误差。
- 向后运行前向反馈运算(反向传播),将误差分散
到每个权重上。 - 更新权重,并获得更好的模型。
- 继续此流程,直到获得很好的模型。
通俗的说,就是前两个线性的合成了右面的非线性的,结果还是有分类错的
那就是顶部模型的分类有错喽,就返回去再更改上一层的权值喽
网友评论