春节充电系列:李宏毅2017机器学习课程学习笔记08之“Hello World” of Deep Learning

【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的backpropagation,这一节将主要针对深度学习的简单实践展开分析。本文内容涉及机器学习中深度学习简单实践的若干主要问题:Keras, 手写数字辨识网络设计、网络的尝试改进。话不多说,让我们一起学习这些内容吧。


春节充电系列:李宏毅2017机器学习课程学习笔记01之简介

春节充电系列:李宏毅2017机器学习课程学习笔记02之Regression

春节充电系列:李宏毅2017机器学习课程学习笔记03之梯度下降

春节充电系列:李宏毅2017机器学习课程学习笔记04分类(Classification)

春节充电系列:李宏毅2017机器学习课程学习笔记05之Logistic 回归

春节充电系列:李宏毅2017机器学习课程学习笔记06之深度学习入

春节充电系列:李宏毅2017机器学习课程学习笔记07之反向传播(Back Propagation)


课件网址:

http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

视频网址:

https://www.bilibili.com/video/av15889450/index_1.html

李宏毅机器学习笔记8 “Hello World” of Deep Learning


在我们最开始学习c语言的时候,第一个程序自然是hello world程序,deep learning中也有类似的程序—mnist手写数字辨识。因为deep learning最终是用于工程实现,所以亲自动手实现很重要,在实际操作中,会遇到种种问题,因为deep learning要是做好的话远没有那么简单。


1. keras




深度学习操作平台有很多,之前已有提到,我们这里使用keras


下面是关于keras一些信息


Keras看起来貌似是很高级的东西,但它实际的操作过程类似搭积木


2.手写数字辨识网络设计




手写数字辨识做的是输入手写数字的图片,机器要辨识它是哪个数字,类似一个多分类问题


我们先定义loss function,用交叉熵表示损失函数,梯度下降方法采用adam


然后准备训练集,定义batch size(100),epoch(20)等值,输入、输出图片表示为numpy array的形式,输入数组维度为2维,第一维为输入个数,第二维为输入维度(784),输出数组维度也是2维,第一维是输出个数,第二维是输出维度(10)。


Batch指的每次做梯度下降取的训练图片,batch size告诉batch有多大,一个batch更新一次参数,所有batch全被挑选称为一次epoch。


当batch size为1时,就成了Stochastic gradient descent


更小尺寸的batch自然意味着在每个epoch中更新参数次数越多,但并非batch越小效率越高,因为由于平行运算,计算10个example的时间和计算一个example的时间几乎是一样的。Batch size太大,取得的效果也很差。


然后我们继续建立各个网络层


最后输出结果


3. 尝试改进




从上图可以看出正确率只有11%,很令人失望。

是不是隐藏层神经元太少了导致的,将Units由633改为689后


正确率0.2166,依然很差


Emmm,是不是神经网络太浅了导致的,隐藏层加为10


最后结果又是0.11,很难受 

正确改进方法下次再说

 

请关注专知公众号(扫一扫最下面专知二维码,或者点击上方蓝色专知),

  • 后台回复“LHY2017” 就可以获取 2017年李宏毅中文机器学习课程下载链接~

-END-

专 · 知


人工智能领域主题知识资料查看获取【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)

同时欢迎各位用户进行专知投稿,详情请点击

诚邀】专知诚挚邀请各位专业者加入AI创作者计划了解使用专知!

请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料

请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!

请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!


点击“阅读原文”,使用专知

展开全文
Top
微信扫码咨询专知VIP会员