初识深度学习
请关注公众号AI Engine
好久不见!由于工作原因很久没有更新文章了,希望不要掉粉哦~
小G同学最近利用工作之余还是学习了一下深度学习方面的知识,今天就把最近的学习心得分享给大家,也当是做一次总结,可以说这也是我与深度学习的初见。
深度学习在近年来作为人工智能领域最重要的进展,在很多方面也作出了卓越的贡献。尤其在这个DT时代,深度学习的能力显得越发的重要。本文还是秉着一贯的作风:实事求是,只唠干货。所以下面解答几个问题,为我解答,也希望可以为您解答:
1.机器学习和深度学习的关系和区别是什么?
答:在回答这个问题之前,大家请先看一幅图片。
在这幅图片中我们似乎是可以粗略的看到二者之间的关系的,深度学习应该是属于机器学习的范畴内的。对机器学习有所了解的同学应该已经清楚监督学习和无监督学习了(当然也有半监督学习,这里先暂时不提),那么深度学习与它们之间到底有什么区别呢?别着急,我们来高度概括一下机器学习。我们将机器学习领域分为四个象限,同时将’知识’这个事物从统计和推理这两个维度出发,分成4类。我们从第一象限出发到第二象限,这一过程是将一些无法统计的知识推理出来,那么推理的依据就是根据既可以统计又可以推理的知识进行经验学习(建模),然后面对不可统计的新数据时进行成功的推理。这个流程就可以利用很多机器学习的方法,比如决策树、随机森林、支持向量机等等。在纵向方面,我们从第一象限来到第三象限,也就是将一些可以统计但是无法推理的知识成果的表达出来,而我们利用的技术就可以是神经网络。比较经典的例子就是阿尔法狗、计算机视觉、无人驾驶等。这就是传统机器学习和深度学习的一个区别:解释的方向有所不同
既然深度学习也属于可统计的范畴,那么他和机器学习还差别在哪里呢?答案就是特征自寻。传统机器学习通过人类分析、先验知识等将数据预处理成n个特征,再基于特征工程的思想将n个特征进行精心筛选。所以算法工程师很辛苦,将绝大部分的时间花费在了选定特征上,但是好处就是无论结果好坏,我们处于在一个相对白盒之中,可以进行有效的调整,用一句鸡汤话就叫做:冷暖自知。后来科学家们发现让神经网络自己去选拔特征似乎算法效果更佳,于是特征表示学习逐渐兴起,但是人类从此陷入了黑盒世界,可谓是 “有多少智能,就有多少人工!” 再后来表示学习的层次逐渐增加,套路越来越深,最终变成了深度学习!好了第一个问题我就算回答完了,我们来看看第二个问题~
2.神经网络究竟是什么?它长什么样?
答:神经网络也可称为多层感知机。刚下生(最基本)的神经网络就长这样婶儿的。随着它逐渐长大,中间的隐藏层会逐渐增多,神经网络通过组合低层的特征,然后形成高层的表示,这些表示就可以描述被识别对象的高级属性或者高级特征。这种生成数据的中间表示能力也是其他传统机器学习所办不到的。
文章的最后还是给大家一份简单的神经网络demo,就叫做first_MLP吧:
# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
#设定随机种子
np.random.seed(7)
#导入并定义x,y数据
dataset = np.loadtxt('../../pima_data.csv',delimiter=',')
x = dataset[:,0:8]
y = dataset[:,8]
#创建模型
model = Sequential()
model.add(Dense(12,input_dim=8,activation='relu'))
model.add(Dense(8,activation='relu'))
model.add(Dense(1,activation='sigmoid'))
#编译模型
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
#训练模型
model.fit(x,y,epochs=150,batch_size=20)
#评估模型
score = model.evaluate(x=x,y=y,verbose=1)
print('%s : %.2f%%'%(model.metrics_names[0],score[0]*100))
print('%s : %.2f%%'%(model.metrics_names[1],score[1]*100))