Fighting Bastion分享 http://blog.sciencenet.cn/u/Tech2KangYQ 搞小研究,过平淡的日子。 一切工作都要落实到对人的关怀。

博文

利用Mathematica搭建人工神经网络

已有 10098 次阅读 2018-1-29 22:29 |系统分类:科研笔记

在这个人工智能的时代,不懂点神经网络,都不好意思开口了。——题记


    神经网络技术(ANN)已经在很多领域发挥了要作用,比如图像检测,语义分析,模式识别。在一些非线性问题上,基于神经网络的方法也相当不俗的表现。事实上神经网络技术几十年前就有了,并且发展过程并不顺利,不过最近火热的“深度学习”让它再次迎来春天。

   现在神经网络的通用架构,工具箱不少,比如Matlab,谷歌的基于Python的Tenserflow,Keras等。Wolfram research公司的Mathematica现在也可以用来建构神经网络了,只要懂Wolfram语言,上手非常容易。作为Mathematica用户,本屌在这个问题上自然是有发言权的啦。  

   

图1.神经网络

   Mathematica中,隐含层事实是被分解为线性层和激活函数层,LinearLayer 函数可以用来定义线性层的神经元数目,比如LinearLayer[5], 就是5个神经元。激活函数包括Tanh,LogisticSigmoid等,事实上用户可以任意定义函数样式,当然现在用的最多的是ReLU函数。一个线性层相当于计算了w.x+b,激活函数层加上线性层相当于隐含层。Mathematica里面关于搭建卷积神经网络的卷积层(ConvolutionalLayer),池化层(PoolingLayer)都是有的,具体怎么用,可以看Mathematica的帮助文档。

   "Talk is cheap,Give me your code",下面上代码。



  比如:

chain = NetChain[{100, Ramp, 250, Ramp, 10, LogisticSigmoid, 3}]

上面的NetChain函数是用来构建网络的,LinearLayer可以直接用神经元数目代替,就是LinearLayer[100]直接写成100也行,可以看到上面这个网络是两个隐含层,用到两种激活函数RampLogisticSigmoid,输出是3维向量。顺便说一句,Mathematica的Ramp事实上就是ReLU函数。

   网络建好了,还需要训练数据。Mathematica中训练数据就是Table(数组),每个元素都是“input->output"的形式,比如{1 -> 1.9, 2 -> 4.1, 3 -> 6.0, 4 -> 8.1}就是一个样本库,一共4个样本,当然实际问题中输入输出可能是多维的,比如图像识别,输入就是二维数组. 下面定义的就是一个卷积神经网(CNN)。如果熟悉CNN的话,从下面的代码能很容易地看出网络的结构。

lenet = NetChain[{

 ConvolutionLayer[20, 5], Ramp, PoolingLayer[2, 2],

  ConvolutionLayer[50, 5], Ramp, PoolingLayer[2, 2],

  FlattenLayer[], 500, Ramp, 10, SoftmaxLayer[]},

 "Output" -> NetDecoder[{"Class", Range[0, 9]}],

 "Input" -> NetEncoder[{"Image", {28, 28}, "Grayscale"}]

 ]


图2.卷积神经网络(CNN)

  上面粗略地讲了下怎么建网络,下面讲怎么训练。

   比如:

net = NetTrain[layer, data, Method -> "SGD"]

上面的layler代表建好的某个网络,data代表准备好的数据集,SGD是随机梯度下降法 ,目前神经网络学习差不多都基于梯度下降,当然有不少新算法出现,Mathematica也内置了一些,如有需要查看帮助文档就行了。神经网络的训练次数,BatchSize等都是可以定义的,Mathematicah甚至还支持利用GPU训练。不管怎样,这些代码都是相当简洁的。

   Mathematica里面有一个用神经网络学习一朵花的奇葩案例:


图4.花

   方法当然是用图片中的一些点的位置坐标和RGB值建立样本,然后让网络去学习。网络的结构就是前面举例用到的那个chain。

   最后展示下网络预测出的整朵花。


图5.神经网络看到的那朵花








https://blog.sciencenet.cn/blog-3302691-1097503.html

上一篇:终身学习,一个现代人应有的态度
下一篇:平台决定高度
收藏 IP: 117.176.140.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-16 17:30

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部