人工神经网络与深度学习学习历程,心得及资料分享

人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习中的“深”指搭建的神经网络层数很深。

经过一个学期有关神经网络和深度学习的摸爬滚打,勉强算是半只脚踏进了这个领域中的图像识别领域。写下这篇学习历程和心得,一方面记录和总结所学以让自己更好地前进,另一方面予以想进入这个方向的人一点指导和启发。

整体上要明白深度学习的应用形式是通过程序实现,深度学习可以说是一类算法。而深度学习的核心部分是数学理论。在学习其理论知识时,我一开始是阅读《人工神经网络理论、设计及应用》这本韩力群的书,同时在网易云课堂上观看吴恩达的微专业课程《深度学习工程师》(网址是:吴恩达深度学习课程)。《人工神经网络理论、设计及应用》这本书对神经网络的总体讲述很清楚,能给你理论的总体框架感,适合对神经网络一无所知的人阅读,而且在BP神经网络的学习算法上给出了严谨详细的数学推导。对于只想学习深度学习的人来说,这本书只用看到第3章就差不多了。吴恩达的微专业课程《深度学习工程师》由于免费观看、浅显易懂、详细的讲解,知名度和受欢迎度非常高,在CSDN博上已有这门课的学习笔记和对应课程的代码实现。这门课程一共分为五个单元:01神经网络和深度学习,02改善深层神经网络、正则化以及优化,03结构化机器学习项目,04卷积神经网络,05序列模型。如果只想研究图像识别,可观看其中的01,02和04,03也可以在后期观看,而05单元主要针对语音识别。吴恩达甚至就这门课程写了一本书,书的电子可通过下面的百度云链接下载: (吴恩达书籍 提取码: 8hcy)

有了一定的深度学习理论知识后,就可以着手编程了。写深度学习程序最好在一个框架内实现。我学习和使用的框架是TensorFlow,它由谷歌开发,是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief,也是目前最受欢迎的深度学习框架。在TensorFlow内的编程是用python高级程序语言,python因为其灵活性和少量代码就能实现复杂功能而成为许多深度学习框架的语言。我学习这个框架在一开始主要通过观看学习视频,视频可通过百度云链接下载:(tensorflow学习视频 提取码: sq77)

这个学习视频共分为10个部分,主要介绍了:如何安装tensorflow,通过全连接神经网络实现手写数字识别,通过卷积神经网络实现手写数字识别,如何使用tensorboard,循环神经网络理论简单讲解及实现,如何保存和使用训练好的模型,如何安装GPU版本的TensorFlow,通过微调Inception_v3模型训练自己的图片,以及最后比较难理解的验证码识别项目。

除了通过看上述视频,同时阅读技术书籍也是必要的。黄文坚、唐源编著的《TensorFlow实战》知名度很高,它除了简要介绍了TensorFlow编程模型等基础知识,也主要从如何编写代码角度分析了如何写手写数字识别程序,自编码器,多层感知器,简单以及进阶的卷积网络。不仅如此,这本书也分析了四种经典卷积神经网络的架构和代码——AlexNet,VGGNet,GoogleInceptionNet,ResNet。我看到了本书的这部分,在这之前的代码都是可以运行的。除了深度学习关于图像识别的内容,这本书也介绍分析了用TensorFlow实现循环卷积神经网络及Word2Vec,简单介绍分析了深度强化学习,TensorBoard,多GPU并行及分布式并行,TF.Learn、TF.Contrib组件。除了这门书之外,何之源编著的《21个项目玩转深度学习》知名度也比较高,里面分章节介绍了基于TensorFlow深度学习的21个项目,我没有全部实现,里面不少代码不能一开始就能运行,有一些错误,需要自己花些时间去调通。

以上关于用TensorFlow实现深度学习理论的书籍和视频教程其根本来源于TensorFlow官网(占主要部分)以及相对应的Github库:tensorflow官网tensorflow的Github网址。我在调试关于finetune Inception_V3代码的时候,看了很多CSDN博客,花了将近一周的时间也没有把代码调通,最后通过看官网的技术文档,不到半天就把代码调通了。这是因为博客会因为TensorFlow的API、版本不断升级拓展而过时,而官网的技术文档则会随时更新,由此可见阅读原始官网技术文档的重要性,即使英文有点难阅读。

除了以上提到的视频教程,下面链接的关于深度学习与强化学习的视频教程知名度也很高,不过我还没有看,所以不做评价 (深度学习与强化学习视频 提取码: awmt)。在书籍方面,下面链接关于TensorFlow内核的书也写得非常好,评价也很高: (tensorflow内核书 提取码: nx3e )它由资深技术架构师刘光聪编著,系统介绍了TensorFlow的构建原理,对于想要深度理解TensorFlow的人来说,这门书是很值得研究的书籍。很多有关深度学习的微信公众号也会推送很多干货,比如AI有道,磐创AI,深度学习与NLP,深度学习这件小事,CVer,深度学习自然语言处理等等。

对于想做研究的人来说,阅读与深度学习有关的经典论文也是必要的,这样能更懂得深度学习这个黑匣子里面的一些实现原理。如果学习深度学习时,还没有python编程基础,也大可不必掌握好python之后再学习TensorFlow,完全可以两者同时学习。如果觉得TensorFlow比较难学,Pytorch框架相对简单一点,知名度也挺高。

在学习的过程中,因为会面临大量代码和文件,也会记下很多学习笔记,这个时候管理和记录的能力就显得非常重要了,我的方法是用平板记下心得和学习笔记,因为相对于纸质笔记本,平板的笔记本软件能更好地进行管理。另外将自己编程的过程记录在CSDN上,既能管理好自己的程序,又能向其他网友分享程序和解决问题的过程——毕竟程序员有一个编程原则——不要重复造轮子。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值