《白话深度学习与Tensorflow》学习笔记(1)

刚入手一本《白话深度学习与Tensorflow》,哈哈,一直看深度学习很火,其实自己一知半解,都没有对这个领域进行一点系统的学习,现在准备看看这本书,开始入门。毕竟深度学习是大趋势,个个都说是个坑,个个都往里跳。。。趁着有时间,了解了解也无妨。

初步感觉这本书比周志华老师的《机器学习》稍微好懂一点,讲实例和大比方居多,当然也有公式支撑。整体还不错,讲了基本神经网络、CNN、RNN、LSTM、HMM、Deep Residual Network(深度残差网络)这些耳熟能详的模型。

所以,一边看,一边做做笔记,也比较随意。

首先,相信很多人都还不知道tensor是什么,百度翻译出来的是张量,张肌,其实,这里的tensor就是向量的意思,tensorflow就是向量流、数据流的意思。tensorflow是谷歌的深度学习开源框架,用于训练神经网络的。

几个深度学习框架的比较如下:

Theano、Torch是两个最具有扩展性的深度学习框架,无论在支持的各种网络层种类数量上,或者是在支持的各种库上。symbolic differentiation是Theano中对于 非标准深度网络架构(non-standard deep architecture) 提供的最有用的特性。

Torch正在补上这个空缺,可以参考这个博客:

https://blog.twitter.com/2015/autograd-for-torch在CPU上training以及deploy,对于任何的网络模型,Torch的性能都最优,其次是Theano,Neon的在CPU上的性能最差在GPU上deploy已经训练好的卷积和全连接网络(也就是 前向传播过程),Torch也是最适合的,其次是Theano在GPU上training卷积和全连接网络,Theano在小网络模型(LeNet)的表现最好,在大网络模型(AlexNet)上,Torch性能最佳。Neon在大网络模型上也非常有优势Torch受益于它众多的扩展库及文档(这个确实,Torch的文档阅读性很强,Theano也不错),还有Torch的错误调试工具也很有优势。

TensorFlow是非常具有扩展性的一个深度学习框架,尤其是在不同情况的各种设备上,进行深度学习框架部署时,更方便稳定。但是在单机上,它的表现就不具有那么强的竞争力了。

Tensor Flow:

TensorFlow是一款开源的数学计算软件,使用数据流图(Data Flow Graph)的形式进行计算。图中的节点代表数学运算,而图中的线条表示多维数据数组(tensor)之间的交互。TensorFlow灵活的架构可以部署在一个或多个CPU、GPU的台式以及服务器中,或者使用单一的API应用在移动设备中。TensorFlow最初是由研究人员和Google Brain团队针对机器学习和深度神经网络进行研究所开发的,目前开源之后可以在几乎各种领域适用。

Data Flow Graph:使用有向图的节点和边共同描述数学计算。graph中的nodes代表数学操作,也可以表示数据输入输出的端点。边表示节点之间的关系,传递操作之间互相使用的多位数组(tensors),tensor在graph中流动——这也就是TensorFlow名字的由来。一旦节点相连的边传来了数据流,节点就被分配到计算设备上异步的(节点间)、并行的(节点内)执行。

机动性: TensorFlow并不只是一个规则的neural network库,事实上如果你可以将你的计算表示成data flow graph的形式,就可以使用TensorFlow。用户构建graph,写内层循环代码驱动计算,TensorFlow可以帮助装配子图。定义新的操作只需要写一个Python函数,如果缺少底层的数据操作,需要写一些C++代码定义操作。

可适性强:可以应用在不同设备上,cpus,gpu,移动设备,云平台等

自动差分:TensorFlow的自动差分能力对很多基于Graph的机器学习算法有益

多种编程语言可选:TensorFlow很容易使用,有python接口和C++接口。其他语言可以使用SWIG工具使用接口。(SWIG—Simplified Wrapper and Interface Generator, 是一个非常优秀的开源工具,支持将C/C++代码与任何主流脚本语言相集成。)

最优化表现:充分利用硬件资源,TensorFlow可以将graph的不同计算单元分配到不同设备执行,使用TensorFlow处理副本。

(其他几大框架介绍见:

https://www.leiphone.com/news/201608/5kCJ4Vim3wMjpBPU.html)

下面正式来谈本书的内容:

一、牛顿法解方程:

在函数上随机取一个点(x0,f(x0))作这个点的切线,得到与x轴的交点,,得到一次近似点x1,然后在函数上找到对应的(x1,f(x1))同样作切线,得到二次近似点x2,这样就不断逼近方程的解。

二、梯度下降法:

这里主要就一个x的更新公式:

每次都根据这个公式进行迭代,直到达到停止条件或者收敛条件。

三、VC维:如果样本数是3,分类方式是分为2类,那么这三个样本可以被完全分开。

2维空间的线性分类器的VC维就是3.对于神经网络而言,我们可以认为其VC维很高,即能把很多很多样本都能完全分开。丰富的VC维也可能使得网络陷入过拟合状态。

四、CNN:

卷积神经网络:

卷积:通过函数f和g生成第三个函数的一种数学算子,表征了函数f与g经过翻转和平移的重叠部分的面积。

卷积核:

F(x)=wx+b 即对原有的像素点进行相乘(*w)最后再加上b就是最终一次卷积的结果。其中,w是一组向量。

卷积层参数:

padding填充:通常是填充0,其作用是:保护边界信息;弥补尺寸差异。

Stride步幅:即每次卷积核滑动的单位。Stride会影响计算的次数和时间,以及下一层的参数数目。

卷积层已经提取过一次特征。

池化层:max-pool与mean-pool,仍然有stride这个参数。

如果在上一层传过来的数据如下所示,并使用stride=2,2*2的核去max-pooling:

池化层又对特征进行了一次提取,进一步获取更抽象的信息;防止过拟合。

保持不变性,容忍图像的少量平移,旋转以及缩放。

局部感知野:

权值共享:

在全局图像中选定一个8*8的小样本,并且用这个小样本学习到一些特征,之后可以利用这些学到的特征应用到全局图像的其他位置上,卷积,可以得到这些特征在图像所有区域的不同响应值,得到卷积后的新图像。 不同的卷积核可以提取不同的如边缘信息、梯度信息等

下采样:

取最大值和平均值分别为最大池化和平均池化。池化的区域不发生重叠,但是权值共享可能重叠。

下采样的方法降低了特征的维度大小。

CNN的典型模型:VGG-16(visual geometry group)其中有16个带有参数的网络层。

激励函数:

1、Sigmoid

y=1/1+e(-z)  z=wTx

2、Softmax

信息熵:信息的杂乱程度或意外程度的量化。熵越小越容易分类。

Softmax使用的损失函数叫做:交叉熵

好像在做逻辑回归,对于每一种分类都是伯努利分布

信息熵:事件越不可能发生,信息量越大。

五、独热编码:one-hot encoding

在一个维度上有着大小关系,在这样设定表示对象的过程的中这种关系被强给了这些对象。

[1,0,0,0,0]这样的形式,可以形成正交的维度。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

学界 | 分离特征抽取与决策制定,如何用6-18个神经元玩转Atari游戏

在深度强化学习中,大型网络在直接的策略逼近过程中,将会学习如何将复杂的高维输入(通常可见)映射到动作。当一个拥有数百万参数的巨型网络学习较简单任务时(如玩 Qb...

10000
来自专栏机器学习算法原理与实践

用tensorflow学习贝叶斯个性化排序(BPR)

    在贝叶斯个性化排序(BPR)算法小结中,我们对贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR)的原理做了...

26920
来自专栏机器之心

ECCV 2018 | 中山大学&商汤提出部分分组网络PGN,解决实例级人体解析难题

识别每个语义部分(如手臂、腿等)是人体解析中最基本、最重要的一部分。不仅如此,它还在许多高级应用领域中发挥了重要的作用,例如视频监控 [38]、人类行为分析 [...

29450
来自专栏AI研习社

使用 Scikit-learn 理解随机森林

在我以前的一篇文章(https://blog.datadive.net/interpreting-random-forests/)中,我讨论了随机森林如何变成一...

15920
来自专栏人工智能

关于提高机器学习性能的妙招

这里有可以让你做出更好预测的32个建议、诀窍与技巧。

26270
来自专栏数据派THU

一文助你解决90%的自然语言处理问题(附代码)

作者:Emmanuel Ameisen 来源:机器之心 本文为大家解析了人工智能领域中的自然语言如何处理。 自然语言处理(NLP)与计算机视觉(CV)一样,是...

41430
来自专栏数据派THU

20篇顶级深度学习论文(附链接)

本文讲述了深度学习正值快速发展进化阶段,新技术,新工具以及新的应用实现正在深刻改变着机器学习领域并不断获得累累硕果。

15330
来自专栏IT派

机器学习新手常犯的6大错误

在刚入门的时候,均方误差作为损失函数是很好的默认选择。但是当需要处理现实问题的时候,这种未经专门设计的损失函数很少能给出最优解。

12100
来自专栏华章科技

最全机器学习种类讲解:监督、无监督、在线和批量学习都讲明白了

这些标准之间互相并不排斥,你可以以你喜欢的方式将其任意组合。例如,现在最先进的垃圾邮件过滤器可能是使用深度神经网络模型对垃圾邮件和常规邮件进行训练,完成动态学习...

25110
来自专栏AI科技大本营的专栏

周志华团队和蚂蚁金服合作:用分布式深度森林算法检测套现欺诈

【AI科技大本营导读】互联网公司每天都面临着处理大规模机器学习应用程序的问题,因此我们需要一个可以处理这种超大规模的日常任务的分布式系统。最近,以集成树为构建模...

19020

扫码关注云+社区

领取腾讯云代金券