天天看点

一个小白的 TensorFlow 学习笔记(一)

导语: 本系列文章以《深度学习原理与TensorFlow实践》一书的内容为基础,结合网络上其他材料,提取并梳理了一些感觉比较有意义的点,也记录了一个菜鸟的心路历程。好东西要大家分享,感觉这本书超赞的,拿来入门很合适。或许会有不对的地方,希望发现的人能指出来,谢谢。

至于什么是AI人工智能,这里就不赘述了。人工智能中有一个分支叫做机器学习,机器学习中有一个分支叫做深度学习。机器学习是指从现实世界中获取大量数据并挑选有代表意义的样本交给算法处理,算法在这个基础上寻找特定的规律。我们提供的数据是多个维度的,即一个事物具有多个属性,例如房子的面积,地理位置,楼层等,这些属性影响了我们想要知道的结果,例如房价。那么我们说这些属性都是我们想要的特征,挑选出对我们求职结果有用的特征就叫做特征工程。那么可以看出机器学习对特征工程有着很高的依赖性,并且这种特征工程往往需要花费很多的时间和人力。于是,可以通过多层非线性变换的组合方式,得到更抽象也更有效的特征表示的深度学习诞生了。

数据的清洗是指对异常样本的处理,例如就我们的样本中某一字段发生了局部的缺失。处理这个异常我们可以:1.丢弃该样本(行) 2.丢弃缺失的字段(列) 3.填充默认值 4.填充平均值 。数据的预处理的目的是使凌乱的数据容易被算法处理,对此可以使用离散化,归一化,标准化以及数值变换等方法。

所谓前向传播,是指网络的正向计算,由输入计算出结果的过程。利用描绘好的模型(例如y=Wx+b, W和b是模型的参数,有训练获得),以及算法模型(例如逻辑回归,SVM等)。

机器学习算法的优化需要依靠代价函数来评估优化方向。《深度学习原理与TensorFlow实践》一书中,以泰坦尼克问题为例(根据泰坦尼克号乘客的各种属性判断是否会幸存),这是一个二分类问题(幸存或者死亡),采用了求交叉熵的方式来作为代价函数。在已有样本中我们知道针对样本x的真实结果为y,而且根据上一步我们根据前向传播图也可以知道预测结果为y',这里是可以直接调用代价函数得到一个损失值,也就是一个代表预测结果与真实结果的差异值。

使用代价函数得到了损失值,这个损失值,自然是越小越好,这代表了我们的预测正确概率很高。为了降低这个损失值,我们加入了优化算法。书中以随机梯度下降算法举例,还提到一些其他算法,但是笔者这里全都不知道,所以先着重学习了一下梯度下降算法。其实也有查过很多资料,但是觉得很多都不是很适合自己,可能是因为笔者的数学基础比较差。

先抛出自己现在的理解:所谓梯度,和斜率是差不多的概念,如果函数属于线性的,我觉得可以说梯度就是指斜率,导数。如果维度大于二维,那么函数会出现“山谷”,这个陡峭的程度就是梯度。感觉在某一点的梯度,一步一步往下寻找,找到山谷的底端。这有一篇文章,对于梯度下降的理解笔者觉得比较好。Gradient Descent 梯度下降法

有了上一步的优化算法,接下来要做的就是利用这个算法进行迭代训练。我们在迭代中不断从训练样本中抽取样本,代入我们的模型。利用优化算法去把损失最小化,也就是调整我们模型的参数。当迭代结束的时候我们的模型也就训练好了。

这边文章记录一下这个时刻的学习心得,后面或许还有修改,或者追加文章去补充。如果能帮助一起学习的就更好了~如果你觉得有哪里不正确,可以直接指出。