《深度学习入门:基于Python的理论与实现》第四章阅读笔记

4 神经网络的学习

这一章主要讲解神经网络的学习,包括第三章初步介绍的前向传播,已经这一章要将的反向传播等。

4.1 从数据中学习

神经网络的特征就是可以从数据中学习。所谓从数据中学习,是指可以由数据自动决定权重参数的取值。

4.1.1 数据驱动

利用数据相出一个可以识别数字的算法。一种方案是,先从图像中提取特征量,再用机器学习技术学习这些特征量的模式,最后对转换后的向量使用机器学习中的SVM、KNN等分类器进行学习。

神经网络可以将数据直接作为原始数据,进行“端到端”的学习。所谓端到端是指从一端到另一端,也就是从原始数据(输入)中获得目标结果(输出)的意思。

4.1.2 训练数据和测试数据

泛化能力或过拟合问题

4.2 损失函数

神经网络以某个指标为线索寻找最优权重参数。神经网络中学习所用的指标称为损失函数,这个损失函数可以使用任意函数。

4.2.1 均方误差

常用损失函数之一。

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

其中y_k表示神经网络的输出,t_k表示实际数据,k表示数据的维数。

python实现:

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

4.2.2 交叉熵误差

另一个常用的误差函数。

E = - \sum_k t_k*log(y_k)

y_k表示神经网络的输出(是个概率,如sigmoid或者softmax的输出),t_k是正确解的标签(t_k采用one-hot表示)

代码实现:

def cross_entropy_error(y, t):
	delta = 1e-7
	return -np.sum(t * np.log(y + delta))

这里加上了一个微小值delta,因为当出现np.log(0)时会变为负无穷大,这样就导致后面无法计算。所以加入了保护性对策。

4.2.3 mini-batch学习

前面介绍的损失函数都是针对单个数据的,当采用批处理时,需要算出所有数据的损失函数的总和。

对于交叉熵:

E = - \frac{1}{N} \sum_n \sum_k t_{nk} * log(y_{nk})

这里假设有N个数据,t_{nk}表示第n个数据的第k个元素的值。y_{nk}是神经网络的输出,t_{nk}是对应的实际数据。实质上是将求单个数据的损失函数扩大到了N份数据,不过最后还要除以N进行正规化。通过除以N,可以求单个数据的“平均损失函数”。通过这样的平均化,可以获得和训练数据的数量无关的统一指标。

另外,对于有些数据集训练数据非常大,如果以全部数据为对象求损失函数的和,则计算过程需要花费较长的时间。因此从全部数据中选出一部分,作为全部数据的“近似”。神经网络的学习也是从训练数据中选出一批数据(称为mini-batch,小批量),然后对每个mini-batch进行学习。这种方式成为mini-batch学习

从训练数据中随机选择指定个数的数据,以进行mini-batch学习

train_size = x_train.shape[0]
batch_size = 10
batch_mask = np.random.choice(train_size, batch_size)
x_batch = x_train[batch_mask]
t_batch = t_train[batch_mask]

使用 np.random.choice(),可以从指定数量的数字中随机选择想要的数量的数字.

>>> np.random.choice(100, 10)
array([28, 64, 60, 53, 35, 87, 51, 67, 77, 56])

4.2.4 mini-batch版交叉熵误差的实现

这里实现一个可同时处理单个数据和批量数据的版本

def cross_entropy_error(y, t):
	if y.ndim == 1:
		t = t.reshape(1, t.size)
		y = y.reshape(1, y.size)

	batch_size = y.shape[0]
	return -np.sum(t * np.log(y + 1e-7)) / batch_size

前面提到了这里的t应该是one-hot编码的方式的,即t中是一组01向量,正确数据的索引为1,其余为0.

如果不是这样的形式,而是只有一个数字,就是正确数据。

则可通过如下代码实现:

def cross_entropy_error(y, t):
	if y.ndim == 1:
		t = t.reshape(1, t.size)
		y = y.reshape(1, y.size)

	batch_size = y.shape[0]
	return -np.sum(np.log(y[np.arange(batch_size), t] + 1e-7)) / batch_size

4.2.5 为何要设定损失函数

在神经网络的学习中,寻找最优参数时,要寻找使损失函数的值尽可能小的参数。为了找到使损失参数的值尽可能小的地方,需要计算参数的导数(确切地讲是梯度),然后以这个导数为指引,逐步更新参数的值。

不以识别精度作为指标是因为,识别精度和参数之间没有规则公式化的隐含关系,无法通过导数这样的方式进行调参,调参方式没有合适的准则。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 深度学习是一种机器学习技术,可以通过模拟人类大脑的神经网络结构来实现智能决策和预测。Python是一种广泛使用的编程语言,也是深度学习中使用最多的语言之一。 如果你想入门深度学习并使用Python进行实现,可以参考一些经典的教材和资源,例如《Python深度学习》(Francois Chollet著)、《深度学习入门:基于Python理论实现》(斋藤康毅著)等。这些教材通常会介绍深度学习的基础理论Python的基本语法和深度学习框架(如TensorFlow、Keras等)的使用方法,同时也会提供一些实例代码和练习题帮助你快速上手。 此外,你也可以通过在线课程和MOOC平台学习深度学习和Python编程。例如,Coursera、Udacity和edX等平台都提供了相关课程,可以根据自己的需求和兴趣进行选择。 ### 回答2: 深度学习入门:基于Python理论实现,是一本介绍深度学习的较为全面的教程。本书主要介绍了人工神经网络,包括基于反向传播算法的多层感知器、卷积神经网络、循环神经网络等基本模型以及它们的实现方法,同时还介绍了一些高级话题,如深度强化学习、生成模型等等。 在本书中,作者通过大量的编程实例来演示深度学习的应用。这些实例包括用深度学习算法进行手写数字识别、图像分类、语音识别和自然语言处理等任务。由于Python是目前流行的机器学习工具之一,因此这本书的实现过程都使用了Python编程语言。 具体来说,本书的主要内容包括人工神经网络基础知识、多层感知器模型、卷积神经网络模型、循环神经网络模型、生成模型、 强化学习、深度学习框架等方面,同时还包括很多深度学习的应用案例。作者采用了基础理论、数学公式、实例程序和实验数据等不同形式的阐释方法,使读者既能够理解深度学习的基本原理,也能够掌握它的实现方法。 此外,本书还提供了大量的参考文献和网上资源,使读者可以进一步深入学习和研究深度学习。在阅读本书的同时,读者可以根据作者提供的代码和数据,通过实际操作来进一步巩固理论知识和应用技能。 总之,深度学习入门:基于Python理论实现是一本非常实用的深度学习教材,可以帮助初学者更好地了解深度学习的基本概念和方法,提高实际应用的技能。 ### 回答3: 深度学习是一种人工智能技术,可用于训练计算机识别和理解大量数据。《深度学习入门:基于Python理论实现》这本书是入门者学习深度学习的必读之书。以下是本书的内容概述。 本书的第一部分介绍了深度学习的基础概念和理论,包括神经网络、反向传播算法、损失函数等。介绍了基本的深度学习模型,如前馈神经网络、卷积神经网络和循环神经网络。此外,还介绍了优化算法和正则化技术。 在第二部分中,作者使用Python编程语言实现了各种深度学习模型,使用的是许多广泛使用的深度学习框架,如TensorFlow和PyTorch。学习者获得从头开始编写深度学习算法的经验,同时实际应用中必备的PyTorch和TensorFlow经验。 在第三部分中,本书涵盖了几个应用案例,包括图像分类、语音识别和自然语言处理。幸运的是,这些案例通过代码演示展示,确保即使您没有实际应用经验也能操作成功。 总的来说,《深度学习入门:基于Python理论实现》是一本适合想要学习深度学习的初学者的绝佳书籍。其提供了深度学习的基本理论和核心技术,同时应用Python编程语言演示了实现技术。由此学习者可以建立深度学习专业的技术栈和能力,在人工智能领域有更广阔的发展空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值