Day3 - Yolo? 那是什麽? 能喝吗?

(今日内容将有数学式,请谨慎服用)
今天要介绍的主角,可以说他是影响模型输出结果以及训练过程中最大的功臣
,损失函数的设计能决定绝大部分模型的好坏,也就是—
Loss Function(损失函数)

损失函数基本上可以分成两个面向(分类和回归),都是希望「最小化」损失函数。

“蛤? 为啥要把她最小化? 阿最小化了能干嘛?”

这就要从「损失」这东西说起了,在回归的问题中,基本上我们做影像辨识希望的结果是越接近正确答案越好,最好你就给我百发百中,每题都对。

*我训练出来的百发百中模型:
https://ithelp.ithome.com.tw/upload/images/20210903/20140460yDBJIxGmz5.png

拿上图举例,假设我们希望的结果是「射中主角」,而那些弹道为预测的结果

损失就是为了达成射中主角这个目的,「需要将弹道偏移多少公分」。换句话说,也就是「预期效果与实际情况的误差值」。

那麽将损失最小化,自然就能让模型的准确率提高;虽然不能百发百中,可能中个90发也不错。

y表示实际值,ŷ表示预测值。
https://ithelp.ithome.com.tw/upload/images/20210903/20140460nRAbT6eiGm.png

那麽在分类的问题中,就变成分类的错误率,当然理想情况是完美分类。

*我丢给模型的考题ヽ(́◕◞౪◟◕‵)ノ
https://ithelp.ithome.com.tw/upload/images/20210903/20140460wgwZH2xI83.jpg

y表示实际类别,ŷ表示预测类别。
https://ithelp.ithome.com.tw/upload/images/20210903/20140460P5qR7wcB7h.png

在分类的问题中,我们不会直接拿分类错误率当作损失函数进行最佳化,这就需要提到Cross-entropy,为求浅显易懂,这里只点出一些重点部分。

Entropy(熵) : 原本指的是科学中的杂乱程度。熵越高,越杂乱、越不确定;反之则越稳定、整齐。
EX : 假设今天某游戏角色下次攻击的暴击机率为90%,那麽也就说明「下一次的攻击很有可能会暴击」。这样就代表熵很低,下次的结果很稳定、确定
那如果今天该角色的暴击机率只有50%,那下次攻击会暴击的机会是一半一半,几乎无法预测是否将会暴击,那就是熵很高,结果充满了不确定性
https://ithelp.ithome.com.tw/upload/images/20210903/20140460oxS1DaUf9L.png
▲机率(X) 与 熵(Y)的分布图

Cross Entropy(交叉熵) : 即为预测值与现实情况的误差。现实与预测重复程度越高,交叉熵越低,结果越准确;若重复程度越小,则交叉熵越高,结果越不准确。

回归常用的损失函数: 均方误差(Mean square error,MSE)和平均绝对值误差(Mean absolute error,MAE)

首先是均方误差(Mean square error,MSE) : 通常预测与实际值的差有正有负,若直接相加,会变成100 + (-100) = 0 这种极为不合理的情况。
https://ithelp.ithome.com.tw/upload/images/20210903/20140460tsfB7E8cm4.jpg
根本就是指蝶为鸽了吧 (X
若要避免这种情况,就必须让所有差值变成正数,其中一个方法便是MSE:
用平方让大家都变正
变正变大之後我们就是兄弟了 ♂

另一种方式为平均绝对值误差(Mean absolute error,MAE) : 一样是将误差值转正,用的是绝对值的方式。

这样,Loss Function的部分算是重点介绍完了,下篇将会介绍Yolo的由来以及历代的重大更新。

参考资料:
https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E4%BB%8B%E7%B4%B9-%E6%90%8D%E5%A4%B1%E5%87%BD%E6%95%B8-loss-function-2dcac5ebb6cb
https://www.youtube.com/watch?v=uqYQ6pAdJ1A&ab_channel=%E6%84%9B%E7%94%9F%E6%B4%BB
https://r23456999.medium.com/%E4%BD%95%E8%AC%82-cross-entropy-%E4%BA%A4%E5%8F%89%E7%86%B5-b6d4cef9189d


<<:  Day 03 : ML in Production 的挑战

>>:  Day3: Big O — 时间复杂度与空间复杂度

Day7-Go回圈

前言 回圈基本上是每个程序语言必备的函式,藉以回圈来达成反覆或是循环的动作。而 Go 语言的回圈种类...

[Day 13]每天前进一点应该也是进步吧?(前端篇)

挑战目标: MockNative Camp 今天我们来整理昨天没有弄好的footer右边的部分, 这...

[13th][Day22] http response header(上)

之前看了 request 常用的 headers 接下来要看看 response 常用的 heade...

【Day 01】 前言 - 大家好 & 目录

HI 大家好~ 第一次参加铁人赛的活动(非常紧张),先简单跟大家自我介绍,几年前我是在事务所当个会计...

Day 27 : Python - 什麽是列表推导式?又该如何将它和if、if-else一起做使用?

如标题,这篇想和大家聊聊「列表推导式」是什麽东西 我们先看看范例再说明,这样大家会比较好理解 Ex ...