NO.1:自学tensorflow之路------神经网络背景知识

引言

  从本周,我将开始tensorflow的学习。手头只有一本《tensorflow:实战Google深度学习框架》,而这本书又讲的非常粗浅。tensorflow中文社区中的翻译的谷歌官方教程十分详细,是自学tensorflow的好帮手,当然如果是英文熟手可以直接看谷歌官方给出的原版教程(博主英语是靠谷歌翻译和百度翻译救活的)。

  本篇博客主要讲述机器学习的发展过程,以及BP神经网络的主要内容。不涉及tensorflow的编程。具体BP神经网络tensorflow的实现将在下一篇博文中展示。

正文

机器学习背景

  在20世纪以来,任何一门技术的发展都离不开学科间的交融,计算机技术的发展,以及才华横溢的工作者的创新。机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

  人类的大脑十分神奇,它帮助人们认识,学习这个世界。神经网络不仅是生物学习记忆的一种结构,同样也是机器学习的基础。将人类的单个神经元传递处理信息的过程简化,并用数学表示,就是神经网络的来源。

图1.生物神经元(上)和神经网络神经元(下)

  早在1958年,Rosenblatt就提出了名为感知机的线性分类模型。但是后来研究人员发现它对非线性问题难以处理,并且当时计算机计算能力低下,难以完成复杂的计算过程。

  神经网络的第一次大的革新是在1974年,Paul Werbos提出了反向传播算法,为神经网络的训练提供了良好的方法。让神经网络出现在各种应用场景中,也逐渐出现了多种多样的神经网络结构。

  1992年,Vapnik等人提出了支持向量机,支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折中,以求获得最好的泛化能力。

  从此,一场支持向量机与神经网络的较量就展开了。并且神经网络在后来的较量中逐渐败下阵来。究其原因主要是由于当时计算机的计算能力依然难以满足多层神经网络训练,计算的要求,同时神经网络还存在着梯度消失的现象,使得多层神经网络难以实现。

  在2006年,深度学习(Deep Learning)算法的提出是神经网络的第二次大的革新。谷歌AlphaGo在围棋中战胜李世石,点燃了深度学习的一个新的热潮。所以本人就在这个浪头上开始跟风了,希望能在明年毕业之前完成毕设论文。

BP神经网络

  一个3层的BP神经网络,是学习神经网络的基础。虽然如今很多工具都有现成的BP神经网络工具,但是如果不能深入了解神经网络内部实际的运作,也将很难对其进行创新。这里将介绍最简单的BP神经网络的正向传播,反向传播过程。

正向传播

  一般的BP神经网络是由输入层、隐含层和输出层三层神经网络组成。输入层神经元的个数等于输入变量的个数,输出层神经元的个数等于输出变量的个数,隐含层神经元的个数一般通过经验法选取。变量从输入层传播到隐藏层,其计算过程如下所示:

其中, xi为输入层神经元i的输入变量,vij输入层神经元i到隐含层神经元j之间突触的权值,θj为隐含层神经元j的偏置,f()为隐含层激活函数,hj为隐含层神经元的输出。

  从输入层到隐藏层的计算过程如下所示:

其中,g()为输出层激活函数,yk为输出层神经元k的输出。

  激活函数为神经网络引入非线性因素,让神经网络可以解决线性模型不能解决的问题。常用的又sigmoid函数与tanh函数,但这两种都存在梯度消失的问题。Re-lu函数可以解决梯度消失的问题,目前被大量使用。这样就讲完了正向传播的过程。

反向传播

  正向传递神经网络,可以得到神经网络输出,随后就可以得到神经网络的误差。神经网络反向传播误差,就可以得到神经元参数应该向最优值运动的方向。通过多次的循环学习,就可以逐渐逼近最优的神经网络参数,完成神经网络的训练。

  输出误差函数为:

  隐藏层误差函数为:

  其中,ok为系统实际输出。将误差进行反向传递后,利用梯度下降法,分别让误差对应各层的权值和阈值求偏导数,以达到最优。其表达式如下所示:

  这样就得到了误差反向传播的公式,通过设定合适的batch,就可以进行神经网络的训练了。

后记

  由于平日学习用Matlab居多,而学习深度学习,tensorflow又是其目前最好用的工具之一。希望一切努力不会付诸流水,与正在学习的朱军共勉。

原文地址:https://www.cnblogs.com/zk71124720/p/8525015.html

时间: 2024-08-01 19:37:52

NO.1:自学tensorflow之路------神经网络背景知识的相关文章

TensorFlow实战-TensorFlow实现卷积神经网络CNN-第5章

第5章-TensorFlow实现卷积神经网络CNN 5.1 卷积神经网络简介 卷积神经网络CNN最初是为了解决图像识别等问题设计的,当然现在的应用已经不限于图像和视频,也可以用于时间序列信号,比如音频信号.文本数据等. 在深度学习出现之前,必须借助SIFT.HoG等算法提取出有效而丰富的特征,再集合SVM等机器学习算法进行图像识别. CNN作为一个深度学习架构被提出来最初的诉求是降低对图像数据预处理的要求,以及避免复杂的特征工程.CNN最大的特点是在于卷积的权值共享结构,可以大幅减少神经网络的参

深度残差收缩网络:(一)背景知识

深度残差收缩网络(Deep Residual Shrinkage Network)是深度残差学习(Deep Residual Network, ResNet)的一种改进,发表在IEEE Transactions on Industrial Informatics上,面向的是数据包含噪声的情况. 简单地讲,深度残差收缩网络就是,将软阈值化作为可训练的模块,嵌入到ResNet之中.接下来结合自己的理解,解读一下相关的背景知识. (1)噪声的含义 如上所述,深度残差收缩网络面向的是数据包含噪声的情况.

word2vec 中的数学原理详解(三)背景知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

Mozilla研究—深入理解mozilla所需的背景知识

mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位.我们用它来实现WEB浏览器.WAP浏览器.邮件系统.电子书和帮助阅读器等应用程序.为此,我最近花了不少时间去阅读mozilla的代码和文档,我将写一系列的BLOG作为笔记,供有需要的朋友参考.本文介绍一下深入理解mozilla所需的背景知识. Mozilla非常庞大,据说有数百万行的代码.逐行理解所有代码是不可能的(也没有必要),不过要理解它的架构,以便充分利用它的功能是可能的.Mozilla涉及的技术比较多,如果不理解这

Multiple View Geometry [多视几何] - Part 0: 背景知识:射影几何,变换与估计

1. 2D射影几何与变换 这一章的内容主要在介绍一些基本的几何概念和几何符号,以便理解后文中的内容.更具体的来说,主要包含了平面射影变换的几何知识. 1.1 平面几何 平面几何是个非常简单的概念,无非是点,线,再就是点和线之间的关系. 1.2 2D射影平面(Projective plane) 众所周知,在平面上的一个点可以用他的2D坐标$(x,y)\in\mathbb{R}^2$来表示,如果$\mathbb{R}^2$是一个向量空间,那么坐标$(x,y)$就是一个向量. 行向量与列向量(Row

.NET同步与异步之相关背景知识(六)

在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成Task(五) .NET 实现并行的几种方式(四) .NET 实现并行的几种方式(三) .NET 实现并行的几种方式(二) .NET 实现并行的几种方式(一) 话再说回来,这五篇随笔都属于<同步与异步>系列.同步与异步.这是一个很大.很笼统的话题,以笔者所学很难将其将其介绍清楚,不过.笔者还是会尽力

windows系统背景知识学习笔记

前言 对于每天都要在windows平台上进行逆向工程任务的我们而言,稍微了解一些系统底层的机制与实现原理,用这些背景知识来武装自己总是好的. 调试器,反汇编器,加包,解包器,虚拟机,等等,无一不是运行在windows系统上, 甚至对内核调试器如SoftICE,WinDbg等工具的使用,也要求了解一些系统的内幕. 最近抽空在阅读<深入解析windows操作系统第6版上册>这本书,因此将其中与软件逆向有关的重点总结出来,部分内容加上了个人的理解进行润色,并非断章取义,而是去芜存菁. 笔记会不定期更

扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识、协议的需求、设计的难点

转自: https://program-think.blogspot.com/2014/11/https-ssl-tls-1.html 扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识.协议的需求.设计的难点 文章目录 ★相关背景知识★HTTPS 协议的需求是啥?★设计 HTTPS 协议的主要难点★结尾 ★相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关

rhythmbox插件开发笔记2:背景知识学习 D-Bus&amp;VFS&amp;Gio&amp; Python GTK+ 3

这次主要简单介绍下相关的背景知识 D-Bus&VFS&Gio& Python GTK+ 3  D-Bus D-Bus是开源的进程通信(IPC)系统,它允许多个进程进行实时通信.D-Bus提供以下功能: 完成在同一个桌面会话下的多个桌面应用程序间的通信,将整个桌面会话联合成一个整体,并为进程分配生存期 完成桌面会话和操作系统的通信,其中的操作系统包括内核,守护进程和进程 http://en.wikipedia.org/wiki/D-bus 下面一张图解释了linux下图形编程的一切: