机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 14086|回复: 0
打印 上一主题 下一主题

clock同学tensorflow第4周学习分享--by clock 20151218

[复制链接]

285

主题

451

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13750
跳转到指定楼层
楼主
发表于 2015-12-21 23:44:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
clock同学tensorflow第4周学习分享--by clock 20151218

作者:clock    整理排版:morinson  来源:FGM学习小组

1NIMST学习
1.1下载安装实现过程就不说了,文档已经详细说明;
1.2 tensorflow实现NIMST过程的理解。
1.2.1概述
该实现是一个人工智能入门示例,相当于编程语言初学者的helloworld.通过这个示例可以一窥TF实现的基本原理和人工智能需要的知识基础。毕竟TF是工具,AI知识才能实现目标。
这个示例我理解分为三大部分,但是分成两个章节说明的(Biginner,Expert)。三大部分有,样本数据是如何封装的,如何实现机器学习到达目的,实现更深层次的机器学习。
1.2.1.1样本数据
这个示例为了方便学习者,使用脚本文件自动装载了大量的样本。样本有两个分类,一类是训练样本(training),一类是测试样本(test)。样本的个体形式是关键,由一个白底黑字图片(xs[x:unkonw,ssample])和一个确认标签(ys[y:yes,s:sample])。每个样本图片的大小是28*28像素。每个像素的明暗由0.0~1.0的小数表示(0.0表示最亮,1.0表示最暗,也可以表示无填充和填充)。这样就组成了一个decimal[28][28]的二维数组。这就是样本的基本情况。这是一个黑白图片,明暗最能表现它的特征了。另外,示例中在说明权重的时候,将图片反色变为黑底红蓝数字。我发现在表现明暗的(0.0~1.0)数字基本也对应了这个红蓝。1代表正面的积极的(positive)而小于1的代表负面的消极的(negative),0就是黑色。
其实这也说明了人工智能的一个关键基础:目标的特征分类。在一个机器学习开始前,我们要明确我们学习的目标,从目标出发搜集样本,再如何根据样本填充数字特征(估计基本都是些多维数组)。毕竟机器只认识0/1。所以我认为特征如何抽象,将决定样本的好坏,间接决定了学习的成本,开销甚至最终结果。这是机器学习非常重要的基础工作。
1.2.1.2一般的机器学习
这个算法只能看懂各个步骤之间的前后关系。但是为什么这么做,不明白。以下内容都是从网上搜出来整理的。其中有部分是个人的理解,请大家批评指正。
1.2.1.2.1 证据的加权求和
首先看看什么是加权求和
统计学认为,在统计中计算平均数等指标时,对各个变量值具有权衡轻重作用的数值就称为权数.
  还是举个例子吧,求下列数串的总和:
  3、4、3、3、3、2、4、4、3、3、
  一般求法为3+4+3+3+3+2+4+4+3+3=32
  加权求法为6*3+3*4+2=32
  其中3出现6次,4出现3次,2出现1次.6、3、1就叫权数。这种方法叫加权法。
    以上是纯数学中对于“加权”的解释;在许多企业、市场或其它应用领域的统计与分析中,对“加权”的应用有一定的出入。
    例如有些学校对学生学期成绩的统计中规定:期中考试成绩占30%,期末考试成绩占50%,平时作业考核占20%。在计算时就是:总成绩=期中考试成绩?30%+期末考试成绩?50+作业评定成绩?20%
   其中的30%、50%、20%就是“权”。
就是对数据在整体评估中占的重要作用设定比例,所有数的比例加起来应为1,然后将各数分别乘以各自的加权比例再相加。这个主要是统计等为了消除某些数据的不现实性等原因而进行的处理方法。
看算法公式:

我的理解
:i代表类型分类(0~9);j代表每个图片是0~748像素索引([28][28]的二维数组)。
每一个证据就是所有的像素按照索引分别进行求和(0.0~1.0)。相当于有个[784]数组,每个元素就是训练图片(60000_traning_images)对应的索引像素的累加和。当然了还有一个偏执量(理解偏置量里面有个列子89的偏置,但是怎么来的无法理解)。
1.2.1.3更深层次的机器学习
卷积神经网络加强训练。
1.3关系理解
Tensorflow-python-c/c++(算法)
利用python调用算法库(c/c++,甚至于其它算法语言),python将这些调用串连在一起,在后台运行的时候很少或根本不再参与后台调用的运算,python只是组装。这样算法的搭配就比较灵活了。而后台运行时也比较高效。我认为pathon调用算法库并组装的运行就是一个图(graph)。
1.3.1          TF是一个AI工程开发的工具集。
1.3.2          要想用TF,至少要了解算法适用场景,作用和效果。这些对一般的开发者来说用好TF应该是够了。反正有高级算法工程师给你编写好c/c++库类,但是要知道怎么去搭建算法。当然说的简单,真做起来还是非常难的。隔行如隔山,更何况是座大山。
1.3.3          对于图(graph)的理解,我有个疑问。Python效率底下。难道我就不能完全用c++去实现这些算法的组装运行么,效率岂不是更高?c++也是面向对象的语言啊。所以在我看到讨论组里有人贴出TF图形化编程界面的时候,我就联想到labview。我个人认为,图形化编程比较适合非软件专业的专家编程。他们只需要知道每个图形代表的是什么,输入输出的是什么,数据流如何传递以及最终结果。而不需要关注计算机语言的本身技术。所以我认为TF以后开放了c/c++模块后,才会大放异彩(andriod)。因为,专家设计算法工程并用TF测试工程的准确性。软件开发者就可以调用这些库类让机器学习现实世界。这样AI开发分工明确,效率更高。
1.3.4           


以上是我的一些思考,在随着后面对TF的摸索,将不断的更新和添加一些篇章。如果问题请大家指正。





我是笨鸟,我先飞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-5-17 04:32 , Processed in 0.063030 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表