《白话深度学习与Tensorflow》读书笔记01

目录

第一章 机器学习是什么

1.1 聚类

1.2 回归

1.3 分类


在入门深度学习的过程中,一直依赖于视频教程的讲解,其实这样是不科学的,目前深度学习的相关教学视频都是由一些知名的博士讲解,还是晦涩难懂的,毕竟差距太大,很难学到一些东西,书籍以及论文才是正确的学习方法,但是论文大多数都是国外的大佬写的,对于英文水平还是有一定要求的,作为工科生(以后不搞学术来说)还需要结合动手才能事半功倍。

目前我自己正处于研究生一年级阶段,虽然以前做的是java,但是没有办法,人工智能确实是这个时代的趋势,这一点是不可避免的,不管想从事哪一个行业,对于人工智能一定要了解,简要介绍一下目前热门词之间的联系:大数据 > 人工智能 > 机器学习 > 深度学习。

所以我从这个月开始读《白话深度学习与Tensorflow》这本书,并且将读书笔记分享在博客中,供自己和大家一起学习记录。这本书的pdf我会放在链接:https://pan.baidu.com/s/1-6HWhjMif4Klb_rigXqP4g 提取码:w80n 。这本书我选择了很久,应该说是入门最简单的书籍了,其他的书籍比如说《深度学习原理与Tensorflow实战》其实也不错但是不适合入门学习。因为我也是第一次读这本书,所以我会读两遍,第二遍的时候再将心得写成博客,这样博客的质量会高一些。

第一章 机器学习是什么

了解机器学习,先要类比本科的c/java/c++语言,数据结构与算法两门课程的学习,还记得本科的第一个代码hello world吗?如下所示:这段代码很简单,这是非机器学习,代码执行的每一步都是按照我的意愿来执行的,换句话说,机器没有学习的过程,理解了这个之后,举出下一个例子来说明什么是机器学习。

public static void main(String[] args){
    System.out.println("HELLO WORLD!");
} 

需求:做一个垃圾邮件分类系统,要求将邮件分为普通邮件和垃圾邮件。

非机器学习的做法:可以写一段代码  if-----else代码完成这个功能,比如说if(邮件中含有“充值8888赢大奖”等词语)就判断为垃圾邮件。

机器学习的做法:我们暂且将这个系统称之为分类器,更为贴切,给出大量(10G或者更大)的垃圾邮件,这些垃圾邮件有特定的术语,叫做训练样本,注意是垃圾邮件给这个分类器,分类器根据这些垃圾邮件的特点确定垃圾邮件的分类规则,这个过程叫做训练,至于怎么训练,涉及到许多不同的算法,但是大多数都是统计学的统计归纳的方法,当总结出判别规则之后,我们还会拿一些“普通邮件”和“垃圾邮件”给这个分类器进行判别,看它是否可以分类正确,这个过程叫验证/测试。

想上述这样,我们给定的训练数据告诉了机器这是垃圾邮件,这种机器学习成为有监督学习,还有一种叫做无监督学习,指的是不给训练数据做标记,比如,同样是上述例子,在给训练样本时,“普通邮件”和“垃圾邮件”都给它,并且不告诉机器这是什么邮件,那么机器通过训练之后会把普通邮件分在一类,垃圾邮件分在一类,当然可能会有几个邮件分错,分错的叫做误差,这样的学习方式叫做无监督学习。

1.1 聚类

聚类(clustering)是一种典型的“无监督学习”,是把物理对象或抽象对象的集合分组为由彼此类似的对象组成的多个类的分析过程。聚类其实并不复杂,举一个简单的例子,如下图所示,小时候老师识图认物的时候,会告诉你这是猴子,注意这个过程不是聚类,当你去动物园的时候,有成千上万只猴子,各不相同,看西游记的时候猴子更多,并且那些猴子还会说话,这个时候你会把这一类都分类为猴子,但是这些猴子和老师说的并不是一样对吧,这个过程就是聚类,换句话说,我们在不经意间完成了聚类的过程。

人类天生具备这种归纳和总结的能力,能够把认知的相似事物放到一起作为一类事物,他们之间可以有彼此的不同,但是我们心里有一个“限度”,只要在这个“限度”内,特征稍有区别但并无大碍,它们任然是这一类事物。所以我们只会把动物园的猴子分类为我们小时候书本上的猴子,而不会把蛇什么的叫做猴子。

比较常用的聚类算法有k-means,基本思路就是利用每个向量之间的距离----空间中的欧式距离或者曼哈顿距离,从远近判断是否属于同一个类别。如下图所示:A和B表示我们知道的猴的种类,C是新来的猴,如何判断C属于哪一类呢?根据距离,可以得知C应该和B属于一类,因为距离近,这就是聚类算法的基本思路。

1.2 回归

回归(regression)是一种“由果索因”的过程,是一种归纳的思想,当我们得到了大量的样本之后,我们猜测他们之间存在的关系如何,这个就是回归的过程,在机器学习领域,最常用的回归有两大类----线性回归和非线性回归。

所谓线性回归,就是在观察和归纳样本的过程中认为向量和最终的函数值呈现线性的关系,而其后设计这种关系为

这里的w和x分别是1*n 和 n*1的矩阵,wx则指的是这两个矩阵的内积,具体来说,以一个病患的身体指标为例,如果身体指标与血糖指标呈线性关系,那么我们可以写成

那么这个方程的未知数就是w1-w5 和 b,我们需要求出这些值,并且这些值是最合适的,这个“合适”怎么理解呢?就是说这个方程根据这些w和b,求出的血糖的值要和真实的血糖的值差不多,那么差多少呢?这个差距我们叫做Loss函数,我来分析一下这个函数,wx+b是预测值,y是真实值,前面由累加符号,就是说希望Loss越小越好。

还有一类回归问题叫做非线性回归,比较具有代表性的算法是逻辑回归算法,它看上去更像是来解决分类问题的,逻辑回归与上面的不同在于可以发现上面的线性回归求的y是具体的值对吧,y表示血糖,可能是80ml,70ml或者等等,但是逻辑回归的y值一般是0或者1,如下图,其实就是将线性回归的wx+b放在了分母e的次方上。

令z=wx+b,可以得到下图

这个函数的图像是这样的

分析一下这个图像就知道逻辑回归究竟在干什么了,横轴为z,纵轴为y,发现z在负无穷到正无穷之间变化,但是y只在0和1之间变化,这个y值我们就可以理解为“是”和“否”了。

1.3 分类

分类是机器学习使用最多的一类算法,通常将分类算法叫做“分类器”,这就相当于一个黑盒子,我们从入口丢入一个样本,出口返回给我们这个样本的类别,比方说我们从入口丢入一张猴子的图片,出口就会显示猴子两个字。

当这个分类器被初始化的时候,它是不具备这个功能的,当我们喂给它许多带有标签的图片,它自己归纳总结之后,才具备这样的能力。

分类问题涉及了几个概念,这里就用书中的例子解释,比如有1000个样本的训练集,是1000张图片,里面有200张是猫,200张是狗,600张是兔子,一共是3类,我们人工给这些图片打上标签:

猫 ---- “0”

狗 ---- “1”

兔子 ---- “2”

书中在这里提到了one-hot编码,简单解释一下,这个分类器最终的结果是告诉我们图片属于哪一类,one-hot编码的意思就是输出的结果是这样的:

(0,1);“猫” : 1

(1,0);“狗” : 0

(2,0);“兔子” :0

不知道各位看懂了没有,猫,狗,兔子分别代表 0,1,2;他们跟着的值是1,0,0。表示这个结果是猫,因为猫为1,其他为0。ok,继续解释,200张猫的图片中,180张正确识别为猫,其余20张为狗;200张狗全部识别正确;600张兔子的图片中550张正确识别,30张误判为猫,20张误判为狗,这在机器学习中是很正常的。

好的,现在两个概念登场了:召回率和精确率。猫:200张180正确,召回率为180 / 200  = 90%;狗:当检索狗的图片的时候,200张准备的,40张被误判的,所以狗的准确率是200 / 240 = 83.3%。下面是机器学习的一般套路,机器学习的问题一般就是分类和回归,做这类问题的一般步骤如下图所示:


 

 

 

发布了111 篇原创文章 · 获赞 60 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Haidaiya/article/details/85632794
今日推荐