深度学习入门笔记06(重点损失函数)

神经网络的学习是从训练数据中自动获取最优权重参数的过程。为了使神经网络能进行学习,将导入损失函数这一指标。而学习的目的就是以该损失函数为基准,找出能使它的值达到最小的权重参数。为了找出尽可能小的损失函数的值,本章我们将介绍利用了函数斜率的梯度法

深度学习和机器学习

你会用什么方法让机器识别出手写数字5,写一个算法吗?

特征量是指从输入数据(如图像数据)中提取出本质数据的转换器。下图说明了,什么时候是机器学习,什么时候是深度学习。

具体而言,深度学习与机器学习的区别:

1.数据量的不同

机器学习小规模数据,深度学习的通常需要大量数据来调整大量的参数。

2.特征依赖

机器学习依赖是人为设置的特征向量,而深度学习,直接学习图像,由机器自己找到特征向量。

3.模型

机器学习的模型较为简单,通常由固定的算法构成,如决策树,随机森林,深度学习模型复杂,由多层神经网络构成。

4.计算资源需求

机器学习的计算资源需求不高,许多机器学习的算法可以在个人电脑上运行,训练时间短。

深度学习由于复杂的模型结构和庞大的参数数量,需要在高性能的GPU上运行。

5.可解释性

1.机器学习:模型通常具有较好的可解释性。例如,决策树可以直观地展示决策的过程和依据,线性回归模型可以给出每个特征的权重,从而解释各个特征对预测结果的影响。这使得数据科学家和决策者能够更好地理解模型的工作原理和预测结果的依据。

2.深度学习:模型往往被认为是 “黑盒”,即很难解释其决策过程和预测结果的依据。虽然一些技术,如可视化中间层的特征、使用注意力机制等,可以提供一定程度的解释性,但深度学习模型的整体可解释性仍然相对较低。这在一些对可解释性要求较高的领域,如医疗、金融等,可能会带来一定的挑战。

训练数据与测试数据

通过学习大量训练数据来调整参数,然后再用机器没有训练过的数据(也就是测试数据)来测试机器训练的模型的能力。这也是为了评价模型的泛化能力。泛化能力是指处理未被观察过的数据(不包含在训练数据中的数据)的能力。

仅仅用一个数据集去学习和评价参数,是无法进行正确评价的。这样会导致可以顺利地处理某个数据集,但无法处理其他数据集的情况。顺便说一下,只对某个数据集过度拟合的状态称为过拟合(over fitting)。避免过拟合也是机器学习的一个重要课题。

损失函数

均方误差

这里只是计算了一个图像的数据的误差, 因为由十个类别,所以要求和。由于softmax函数的输出可以理解为概率,因此上例表示“0”的概率是0.1,​“1”的概率是0.05,​“2”的概率是0.6等

t是监督数据,使用了one-hot表示,正确的标签为1,其他为零。

均方误差的代码实践:

 

交叉熵误差

 

这里可以看出,交叉熵有很多零项,实际上,这个求和只有一项,也就是只计算对应正确解标签的输出的自然对数。

x等于1时,y为0;随着x向0靠近,y逐渐变小。因此,正确解标签对应的输出越大,式(4.2)的值越接近0;当输出为1时,交叉熵误差为0。此外,如果正确解标签对应的输出较小,则式(4.2)的值较大(注意有一个负号)。

使用代码实现交叉熵

这里的delta起保护作用,防止y过小导致log过小,从而无法计算。

mini-batch学习

前面定义的损失函数都是针对单个数据计算的,如果要计算所有训练数据损失函数的总和,以交叉熵为例,可以使用以下式子。

这里假设一共有N个数据,ynk表示第n个数据的第k个元素的值。

最后要除以N,计算每个数据误差的平均值,排除由于数据过多而导致误差值很大这一影响因素。

mnist的数据有60000个,计算全部数据的损失函数需要较长时间。

在处理大量数据的时候,我们可以选择小批量的数据作为样本来学习。这种方法叫做mini-batch学习。

np.random.choice的功能,在一定范围内,随机选择数字

 

为何要定义损失函数

为什么要定义损失函数,为什么不能用精度做指标?

我们来思考另一个具体例子。

精度是这样计算的,假设某个神经网络正确识别出了100笔训练数据中的32笔,此时识别精度为32%。

如果以识别精度为指标,即使稍微改变权重参数的值,识别精度也仍将保持在32%,不会出现变化。也就是说,仅仅微调参数,是无法改善识别精度的。即便识别精度有所改善,它的值也不会像32.0123 ...%这样连续变化,而是变为33%、34%这样的不连续的、离散的值。

也就是说如果以识别精度为指标,则参数的导数在绝大多数地方都会变为0。

同理我们一般不用阶跃函数作为激活函数,因为阶跃函数的导数在绝大多数地方都为0。

也许有人会说,你怎么从阶跃函数的导数推出参数的导数呢?

还记得之前的内容吗,我们有两个输入x₁,x₂。我们计算 a₁=w₁x₁+w₂x₂+b。然后用激活函数y=h(a₁)。如果h(x)是阶跃函数,这时如果w₁改变了。但是a₁和a₂都小于0,或者都大于0,则这样的参数的改变并不明显。不过肯定存在这样的数,之前a₁大于0,之后小于0(或者相反)。但是对于绝大多数的数字来说,变化不大!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值