人工智能
0、人工智能初识
- 0.1:课前准备
- 0.2:课程主要内容
- 0.3:知识点
- 0.4:TensorFlow的介绍
- 0.5:课程需要用到的软件及其安装
1、人工智能、机器学习、深度学习的定义
- 1.1:定义和分类
- 1.2:过拟合问题
- 1.3:RNN递归神经网络
2、TensorFlow的使用
- 2.1:创建一个简单的helloword显示
- 2.2:TensorFlow的基础模型
- 2.3:可视化利器TensorBoard
0. 人工智能初识
目前人工智能越来越火,比如说AlphaGo打败了李世石、人工智能dota2打败了世界顶级的中单选手、马斯克的jarvis智能家居管家、各大汽车厂商布局无人驾驶汽车、苹果手机的Siri等语音助手和智能医疗等。
0.1 课前准备:
- 需要有linux命令行基础(我的《linux探索之旅》、《鸟哥的私房菜》和慕课网的《linux达人养成计划》)、python和数学基础(线性代数、微积分、概率论)
0.2 课程主要内容:
- 课程的主要内容包括人工智能的理论知识、开发工具介绍、TensorFlow基础练习和应用实践,
- 通过这门课程可以了解到人工智能的知识点、python库的使用和TensorFlow框架的使用和应用开发。
0.3 知识点:
- 人工智能:深度学习、强化学习和神经网络等
- python:各种python的常用库
- TensorFlow:原理、循序渐进的使用,最终实战
0.4 TensorFlow的介绍:
TensorFlow它是google开源的基于数据流图的科学计算库,适用于机器学习。
TensorFlow的基本构架
TensorFlow的详细架构
TensorFlow的特点:
- 灵活性:只要可以将计算表示成数据流图,就可以使用TensorFlow
- 跨平台:linux、windows、android、ios、raspberry pi等
- 多语言:上层开发语言python、c++、java、go等
- 速度快:包含了XLA这款强大的线性代数编辑器
- 上手快:keras、estimiators等高层api
- 可移植性:代码几乎不加修改移植到cpu、gpu、tpu等平台上
TensorFlow的著名用途:
- DeepMind(google)的AlphaGo、AlphaGo Zero的底层技术
- google产品:搜索,gmail,翻译、地图、android、照片、youtube
- 开发出击败dota2世界顶级选手的AI的OpenAI使用TensorFlow
TensorFlow的大事记:
- 2015年11月9google在github上开源了TensorFlow
- 2016年4月13TensorFlow0.8版本发布,支持分布式
- 2016年4月29开发AlphaGo的deepmind团队转向TensorFlow
- 2016年5月12开源基于TF的最准确语法解析器Syntaxnet
- 2016年6月27:TensorFlow0.9版本发布,增加移动设备支持
- 2016年8月30:高层库TF-Slim发布,可以更简单快速定义模型
- 2017年2月15:TensorFlow1.0版本,提高了速度和灵活性
- 2017年8月17:TensorFlow1.3版本,Estimators估算器加入
- 2017年11月2:TensorFlow1.4版本,keras等高级库被加入核心
主要机器学习库的对比:
学习方法:
- 官网
- 视频+书籍(吴恩达的maching lerning coursera)还有吴恩达的深度学习课程
- 实战
依次学习人工智能、数学知识、机器学习、深度学习、TensorFlow
TensorFlow的安装形式有
- virtualenv
- pip:python软件包管理系统即pip installs packages递归缩写
- docker
- anaconda
- 源代码编译
0.5 课程需要用到的软件及其安装:
操作系统:Ubuntu 16.04
python:2.7.x
python库:numpy,matplotlib等
TensorFlow
任天堂N64游戏主机模拟器:Mupen64plus
虚拟机:vitualbox 5.x
安装过程:这个过程等在自己电脑上实现后,编写出来步骤。
1. 人工智能、机器学习、深度学习的定义
三者的范围
1.1 定义和分类:
机器学习等同通过训练找到一个好的函数模型,然后可以更好的预测出数据。
机器学习分为监督学习、无监督学习、半监督学习、强化学习
- 监督学习(supervised learning):带标签
- 无监督学习(unsupervised learning):不带标签,cluster(聚类)
- 半监督学习(semi-supervised learning):少量标签
- 强化学习((reinforcement learning)):基于环境而行动,以取得最大化预期利益
机器学习6步走:收集数据、准备数据(特征数据)、选择/建立模型、训练模型、测试模型、调节参数
机器学习关键的三步:
- 找一系列函数来实现预期的功能:建模问题
- 找一组合理的评价标准,来评估函数的好坏:评价问题
- 快速找到性能最佳的函数:优化问题(比如梯度下降就是这个目的)
深度学习:基于深度神经网络的学习研究称之为深度学习
深度学习的工作原理:
- 1、在神经网络中正向传播参数信号,经过隐藏层处理,输出结果
- 2、计算和预期的差距(误差),反向传播误差(BP算法),调整网络参数权重(还可以进行模型的调整)
- 3、不断地进行:正向传播->计算误差->反向传播->调整权重
1.2 过拟合问题:
过拟合:一丝不苟的拟合数据导致模型的泛化能力弱
解决办法:
- 降低数据量
- 正则化
- dropout
1.3 人工智能发展简史:
- 沃伦.麦卡洛克和沃尔特.皮茨在1943年创造了神经网络的计算模型
- 由约翰.麦卡锡等人在1956年发起的达特茅斯会议(定义AI)
- 罗森布拉特1957年发明了感知器这种最简单的人工神经网络,从而出现了第一个高峰
- 1970年后的10几年是人工智能的第一个寒冬,原因是传统的感知器耗费的计算量和神经元的舒服平方成正比,计算机性能不够
- RNN递归神经网络:由约翰、霍普菲尔德在1982年发明的一种递归神经网络,它具有反馈机制
- 1986大卫.鲁姆哈特完整提出了BP算法(back propagation),它最初是由保罗.沃伯斯于1974年发明。从而出现了第二个高峰
- 1990年开始,由于美国政府资助的人工智能计算机Darpa没能实现,导致人工智能进入了第二个寒冬
- 2006年杰弗里.辛顿提出基于深度(多层)的神经网络,从而出现了第三次热潮
- 人工智能进入了感知智能时代(运算智能、感知智能、认知智能)
2. TensorFlow的使用
2.1 创建一个简单的helloword显示:
mkdir mooc //创建目录mooc
cd mooc //进入到目录mooc中
mkdir 1.helloworld //创建1.helloworld目录
cd 1.hellworld/ //进入到1、helloworld目录中
vim helloworld.py //用vim编辑器生成并且编辑helloworld.py
//以下为helloworld.py的内容
#_*_ coding: UTF-8 -*_
#引入TensorFlow库
improt tensorflow as tf
#创建一个常量operation(操作)
hw = tf.constant("Hello world ! I love tensorflow !")
#启动一个TensorFlow的session(会话)
sess = tf.session
#运行Graph(计算图)
printf sess.run(hw)
#关闭session(会话)
sess.close()
//结束
python helloworld.py
2.2 TensorFlow的基础模型:
TensorFlow的基础模型
边为(Tensor张量)、结点(operation操作)
会话、图的解释
tensor的属性包括:dtype、shape等
tensor有以下几种:
- constant、常量
- variable、变量
- placeholder、占位符
- sparsetensor、稀疏张量
tensor的表示法
var=tf.variable(3)
var
<tf.variable 'variable_3:0' shape=() dtype=int32_ref>
设定tensor的属性(dtype、name)
named_var = tf.Variable([5,6], name="named_var",dtype=tf.int64)
TensorFlow的程序流程
2.3 可视化利器TensorBoard:
TensorBoard可以用来看到训练模型中的黑匣子内部的状态。
使用步骤:
- 1、tf.summary.FileWriter("日志保存地址",sess.graph)
- 2、tensorboard --logdir=日志所在路径
- 3、summary(总结、预览),用于到处关于模型的精简信息的方法,可以使用TensorBoard等工具访问这些信息
summary中图标表示的意思
一个训练模型的例子(tensorboard.py):
#_ coding: UTF-8 -
improt tensorflow as tf //引入TensorFlow库
w=tf.Variable(2.0,dtype=tf.float32, name="weight")#权重
b=tf.Variable(1.0,dtype=tf.float32, name="bias")#偏差
x=tf.placeholder(dtype=tf.float32, name="input")#输入
with tf.name_scope("output") #输出的命名空间
y=w*x +b #输出
path = "./log" #定义保=-存日志的路径
init=tf.global_variables_initializer() #初始化所有的变量
with tf.Session() as sess #创建session会话
sess.run(init) #变量呗初始化
writer=tf.summary.FileWriter(path,sess.graph)
result =sess.run(y, {x:3.0})
print("y = %s" % result) #打印运行结果
所有的运行命令如下
- vim tensorboard.py
- python tensorboard.py
- tensorboard --logdir=log
原文地址:https://www.cnblogs.com/agui125/p/9938461.html