深度学习入门笔记 Day5/15 神经网络(三)

一、可否从数据中自动学习神经网络的权重参数?

当然可以,不然学深度学习干啥!神经网络的特征就是可以从数据中学习。所谓“从数据中学习”,是指可以由数据自动决定权重参数的值。

深度学习、机器学习的区别:深度学习的优势在于不需要人为挑选特征值。

https://blog.csdn.net/eowyn0406/article/details/86690667

二、为什么要将数据划分为训练数据和测试数据?

训练数据用来训练网络权重参数,但由于过拟合的问题,用一组特定的训练数据训练出来的网络可能只是在训练数据上表现很好,而当面对其他数据时,可能表现很差。由于数据有限,所以划分一部分数据作为测试数据,来验证算法最终的效果,就是是不是在不同的数据集上表现得都很好。

三、为什么强调泛化能力?

泛化能力是指处理未被观察过的数据(不包含在训练数据中的数据)的能力。

泛化能力可以理解为普适性,就是训练好的网络(分类器)既不过拟合,也不欠拟合。

四、如何通过损失函数(loss function),指导权重参数的自动学习?

损失函数是表示神经网络性能的“恶劣程度”的指标,即当前的神经网络对监督数据在多大程度上不拟合,在多大程度上不一致。以“性能的恶劣程度”为指标可能会使人感到不太自然,但是如果给损失函数乘上一个负值,就可以解释为“在多大程度上不坏”,即“性能有多好”。并且,“使性能的恶劣程度达到最小”和“使性能的优良程度达到最大”是等价的,不管是用“恶劣程度”还是“优良程度”,做的事情本质上都是一样的。

相当于,机器进行一次学习后都进行一次测试,通过损失函数对他进行打分(分越高,成绩越差),给他一个成绩,机器的目标就是不断调整参数,使最终获得的分数最高。

损失函数通常用均方误差或者交叉熵误差

(1)均方误差:

E=\frac{1}{2}\sum_k (y_k-t_k)^2

def mean_squared_error(y, t):
    return 0.5*np.sum((y-t)**2)

(2)交叉熵误差:

E=-\sum_k t_k \log y_k,因为 t_k 只能等于0或1,因此,只有1的时候这个式子起作用,y_k 越接近1,log越接近0,则误差越小,反之, y_k 离1越远,值越接近-inf,误差越大。

def cross_entropy_error(y, t):
    delta = 1e-7
    return -np.sum(t*np.log(y+delta))  #加上一个微小值,保证求log(x)时,x不会等于0

这两个函数都有一个特点,当神经网络的输出 y_k 越接近其对应的标签 t_k ,则其误差 E 越小。因此,可以用损失函数来对网络进行评价,网络的输出结果与已知的标签越一致,则误差越小。

五、为什么不使用全量数据,而是mini-batch数据进行学习?

一个是没有必要,mini-batch相当于采样平均,二个是因为全量数据计算量太大,效率低或者根本无法计算。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值