《Deep Learning with keras》翻译连载

这边,解释一下,将会连载关于《Deep learning with keras》一书的翻译版及一些自己的认识。如有侵权,请联系删除。若有错误,请指出,多谢关照。由于翻译水平有限,有兴趣的同行可以阅读原版书籍。如果连载的文章会给您多少带来帮助,倍感荣幸。

翻译版从原著的第12页开始,关于前面的内容,如果有必要的话,在全部翻译完之后会进行补充。

正文开始:

***********************************************************************************************************

多层感知机-网络模型的第一个例子

    在本章中,我们定义一个拥有多线性层的网络模型。在历史上,感知机是有一个只有一个线性层的模型的名字,如果有多层,我们称之为多层感知机(multilayer perceptron, MLP)。 下图表示一个具有一层输入层、一层中间层以及一层输出层的通用神经网络模型。

《Deep Learning with keras》翻译连载

多层感知机

在上述的图片中,第一层中的每个节点接收一个输入并根据该输入触发预定义的局部决策边界(**函数)。然后将第一层的输出传递给第二层,其结果被传递到由一个神经元组成的最终输出层。这和早期讨论的人类视觉模式十分相似。

注意:网络是密集的(全连接的),这意味着每一个本层的神经元将会和上一层的神经元全部连接,同理,也会和后一层的神经元全部连接。

训练感知机存在的问题和解决方案

让我们来思考一个单个信号的神经元,如何选择最好的权重(weight)和偏置(bias)?理想情况下,我们希望提供一组训练示例,并让计算机调整(梯度下降法)得到输出中产生最小化误差的方法。为了更加具体的阐述,假设我们有一组包含有猫的训练集和一组不包含猫的训练集。为了简单起见,我们将每个神经元看作一个输入的像素值。当计算机处理这个图像时,我们更愿意我们的神经元自动的调节权重和偏置以至于在分辨有猫或者没有猫时得到更小的分辨错误率。这个方法看起来好像很直观,但是它需要满足权重或偏置的变化对输出结果起到很小的变化。

如果我们的输出是阶跃式变化的,我们不能循序渐进的学习(不是尝试所有可能的方向-一个被称为彻底搜索的过程-而不知道我们是否在改进)。毕竟,感知器不能像小孩子一样一点一点的学习,没有一点一点的行为(连续与离散,这里的连续与离散指分类过程中的问题),感知器要么是0,要么是1,这是一个很大的跳跃,它并不会帮助学习。如下图所示:

 

《Deep Learning with keras》翻译连载

阶跃

 我们需要一个连续的,流畅的函数,从0到1逐渐变化的函数,没有间断。用数学语言讲,我们需要一个连续的可以计算导数的函数(可以通过梯度计算来反向求解)。

**函数-sigmoid

 

《Deep Learning with keras》翻译连载

Sigmoid**函数

正如下图所示,当输出在负无穷到正无穷变化时,输出上在0和1之间变化。数学上讲,这个函数是连续的,一个典型的S型函数如下图所示:

《Deep Learning with keras》翻译连载

《Deep Learning with keras》翻译连载

因为涉及到很多公式要编译,这边的公式编译并不是很好用,写了好多次多无法保存

**函数-ReLU

Sigmoid和ReLU在神经网络中均被称为**函数。在keras测试不同优化方法的内容中,我们将会看到这些逐渐变化,典型的sigmoid函数和ReLU函数,是开发一个学习算法的基本构建块,该算法通过逐步减少网络模型中的错误,逐渐适应。使用**函数Sigmoid,使用(x1,x2,...Xm)作为输出向量,使用(w1,w2,...,wm)作为权重向量,使用b作为偏置的实例如下图所示,其中(求和符号)表示求和

《Deep Learning with keras》翻译连载

图例

一个例子,识别手写字体

在本部分内容中,我们建立一个可以识别手写字体的网络模型。为了实现这个目标,我们使用MNIST (可自行下载,其实不必要自己下载),这是一个包含有60000张手写数字和10000张测试图片组成。训练样本被人工标记上正确标签。比如,如果手写数字是3,那么3就是与该样本关联的标签。

在机器学习中,当一个数据集有正确的标签时,我们可以说在执行一个有监督学习算法。(注:无监督算法有k-means,高斯混合等)。在这样的情况下,我们可以使用训练集来调节我们的网络模型。测试集同样有着正确的标签。然而,这样的情况下(测试时),我们假设标签是未知的,让网络来进行预测,然后根据已知标签和预测结果来评估我们的神经网络在识别数字方面的学习效果。测试集只是为了测试我们的网络。

每一个MNIST图像是一个灰度图像,由28*28个像素组成。这些图像如下图所示:

《Deep Learning with keras》翻译连载

一位有效编码

在很多应用中,将分类(非数值)特征转化为数值变量是很方便的。(不懂没关系,往下看)例如,d是[0-9]之间的一个数字,其分类特征数字可以编码成一个有10个位置的二进制向量,除了第d个位置是1之外,这个二进制向量的其他位置为0。(赠,图片一张,以帮助理解)这种类型的表示称为一位有效编码,用于学习算法专门用于初始数值函数,这种表示在数据挖掘中非常常见。

《Deep Learning with keras》翻译连载

******************************************************************************************************************************************************************************************************************************

今天的正文部分就先到这里。如果有任何相关问题,请联系[email protected],正经问题可能会回复晚一些,但是一定会回复。OK,这边,如果有任何侵权,将会及时删除,给您带来的不便请多谅解。为了进一步了解keras,附上中文版keras文档地址:

https://keras-cn.readthedocs.io/en/latest/layers/recurrent_layer/#recurrent