了解了神经网络家族核心成员后,咱来讲个解决手写数字分类的网络。首先,来看下这个任务的神经网络架构是怎么来的?神经网络架构中,我们知道,神经网络架构基础构成是输入层,包含输入神经元;隐藏层,包含隐藏神经元;输出层,包含输出神经元。按照一般的数据挖掘步骤
step 1 : 需求分析
step 2 : 任务拆解
step 3 : 模型构建
step 4 : 模型评估
step 5 : 业务评估与模型迭代
这里,咱重点讲 step 1 ~ step 3。
step 1、2 : 需求分析、任务分解
业务方:我们想要在线上提供用户手写数字功能,减少用户业务办理的复杂度,需要你们大数据部门协助下,我也不知道你们能干嘛?
咱:wtf,你是在逗我吗,不知道我们能干嘛,你找我们干嘛?
你以为业务什么都知道,就和老师给学生布置作业一样,把需求讲的清楚明白的吗?不,想多了,90%以上的业务只会和你说他要给用户什么样的感觉,然后让你去实现?
感觉???鬼知道是什么感觉!!!
动态的需求画面就这样产生了,捉摸不透的感觉,咱数据人绝不允许这种怪物出现!所以,咱开始进行需求分析~
首先,咱要知道处理对象长啥样。没错,就长下面这样,不是一个单独的数字,而是一连串数字。
手写数字所以,咱们的需求包含两个机器学习任务,一是数字分割,二是识别单独的数字图像。这里,咱重点讲下第二个任务。
step 3 :模型构建
那么,咱的模型,即神经网络架构就可以设计出来了,输⼊层的设计是对输⼊进行编码,这里就是对像素的值进⾏编码,像素单元总共是n*n个,那么输入神经元个数;隐藏层的层数和神经元可以自由设计,一个直接的意义就是提取特征的具象程度,也可以理解成特征处理深度,设计的特征处理越复杂,隐藏层层数越多,神经元越多;输出层的设计是基于对隐藏层的假设,由此启发而来,这里假设隐藏层是⽤来探测数字的组成形状,那么输出神经元的个数,这里就是10。其实,所有的数字都可以被分割成0-9,所以这样的输出层设计是通用的。
手写数字模型结构这里,咱扩充下另一种模型结构,改变输出层的结构,设计目的是实现按位表⽰数字。通过在上述的三层神经⽹络加⼀个额外的⼀层就可以实现按位表⽰数字。额外的⼀层把原来的输出层转化为⼀个⼆进制表⽰,如下图所⽰。为新的输出层寻找⼀些合适的权重和偏置。假定原先的 3 层神经⽹络在第三层得到正确输出(即原来的输出层)的激活值⾄少是0.99,得到错误的输出的激活值⾄多是 0.01。
按位输出的模型结构
网友评论