Add loss function

pull/2/head
benjas 5 years ago
parent 35dfb7723c
commit 87fc1bd776

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@ -43,6 +43,8 @@
> 如上图,将一个图像,分解成多个维度并变换成数值,变成机器可认识的。 > 如上图,将一个图像,分解成多个维度并变换成数值,变成机器可认识的。
#### 深度学习应用领域 #### 深度学习应用领域
自动驾驶: 自动驾驶:
@ -63,6 +65,8 @@
![1609231974586](assets/1609231974586.png) ![1609231974586](assets/1609231974586.png)
#### 计算机视觉任务 #### 计算机视觉任务
如图像分类任务,如何把一张猫的图片,分到猫的类别(有一些列的标签:人、笔、飞机、猫 等等) 如图像分类任务,如何把一张猫的图片,分到猫的类别(有一些列的标签:人、笔、飞机、猫 等等)
@ -95,3 +99,105 @@
这些都是可能遇到得问题,如何解决可以给一些遮蔽的样本,这些都是数据量可以解决的。 这些都是可能遇到得问题,如何解决可以给一些遮蔽的样本,这些都是数据量可以解决的。
#### 得分函数
线性函数
- 从输入——>输出的映射
![1609292913300](assets/1609292913300.png)
每个像素点对结果产生影响,而每个像素点有对应的权重。
- 数学表示
![1609296031349](assets/1609296031349.png)
`32*32*3`=3072个X像素点假设需要分类的类别一共有10个那么这3072个X在这10个W类别中有着不同的权重得分还有b偏值项最终最高 得分 的就是预测的分类。
- 计算方法
![1609296720418](assets/1609296720418.png)
为了计算简单假设这种猫只有4个像素点分别是56、231、24、2分成3个类别猫、狗、船其中W有3行对应3个类别且Wi有4个值对应4个像素点我们来计算第一行`W*X+b = `0.2*56+(-0.5)*231+0.1*24+2.0*2+1.1`=-97.9+1.1=-96.8,这样就得到了结果。
当权重Wi比较大时说明该像素点对结果的影响比较重要正值代表促进作用负值代表抑制作用。
- W矩阵怎么来的一开始是假设了一个然后根据结果不断优化就想上面的预测是把猫预测成了狗437.9那么神经网络会不断迭代W矩阵中的值。
现在我们知道上面的结果不够好,那么我们应该怎样让它变好。
#### 损失函数
- 如何衡量分类的结果
- 怎么明确模型当前的效果是好是坏。
##### 其中一种损失函数(回归任务):![1609297367586](assets/1609297367586.png)
实验:
![1609297561822](assets/1609297561822.png)
假设我们运行完模型得到上面这么个结果第一张图评定为猫3.2为车5.1明显不合理如果利用上面的公式就是5.1-3.2=1.9值越大表明预测越离谱小于0则表示没有误差。
而+1是为了防止一种情况是如果预测的car不是5.1而是3.15那么3.15-3.2也小于0但是能明确的说预测没问题吗或许不能吧因为只有一点偏差可能是“刚刚好”预测对了那么+1就可以防止这种情况预测对的值一定要远大于预测错的值。
计算:
cat = max(0, 5.1 - 3.2 + 1) + max(0, -1.7 - 3.2 + 1)
= max(0, 2.9) + max(0, -3.9)
= 2.9 + 0 = 2.9
car = max(0, 1.3 - 4.9 + 1) + max(0, 2.0 - 4.9 + 1)
= max(0, -2.6) + max(0, -1.9)
= 0 + 0 = 0
frog = max(0, 2.2 - (-3.1) + 1) + max(0, 2.5 - (-3.1) + 1)
= max(0, 5.3) + max(0, 5.6)
= 5.3 + 5.6 = 10.9
其中car预测最好frog的预测最差
损失函数的值相同,意味着两个模型一样吗?
- 还是这个公式:![1609308126418](assets/1609308126418.png)
- 输入数据X = [1, 1, 1, 1]
- 模型Aw1 = [1, 0, 0, 0]
- 模型Bw2 = [0.25, 0.25, 0.25, 0.25]
- 两者的结果都等于1那两者的可以说一样吗是不是模型B的W更可靠。那么损失函数还得加入一个东西
损失函数 = 数据损失 + 正则化惩罚项
- 正则化惩罚项:![1609308398263](assets/1609308398263.png)
- 正则化惩罚项关注权重ww越大则该公式的结果越大我们希望模型不要太复杂过拟合的模型是没用的。往往还有个 λ 。
回归任务的解决了,还有分类任务的。
##### Softmax分类器分类任务
- 归一化:![1609309168103](assets/1609309168103.png)where![1609309191428](assets/1609309191428.png)
- 计算损失值:![1609309232205](assets/1609309232205.png)
举例:
![1609309309120](assets/1609309309120.png)
> 其中3.2exp表示e^3.2=24.524.5normalize表示24.5 / (24.5+164+0.18) = 0.13,这就是概率,同时我们再做-log(0.13)可以得到0.89这个损失值log(1)的时候为0即没有损失表示概率值越接近于1损失的越少。
这些都是前向传播一步步的得到损失值那么如何以损失值来更新W更新模型呢这就是反向传播。
Loading…
Cancel
Save