机器学习入门
看了吴军的观点和: https://www.afenxi.com/58018.html
对于一个观点深以为然
- 业务第一, 这里是经验, 直觉, 分析能力等等的集合. 简单地说就是: ‘权威说的就是正确的’
- 数据第二, 这里是能够大量提升成绩的原料, 比如google做翻译, 语音……
-
算法第三, 如果前面没有问题, 这里的提升非常微小, 这也是google的ak47理论完美贴合现实的原因.
- 神经网络就是机器学习的一个算法.
步骤
-
学习python
python #这样启动的是python2 python3 #这样启动的是python3
-
安装, 目前并不清楚下面这两个是啥
- anaconda3
- 顺手又装了pycharm
#python头部加入下面一行注释, 就可以直接执行了.
#!/usr/bin/env python3
chmod a+x test.py #加权限
./test.py #执行
python基础
# 这是注释
a<b<c # 表达式, 这是python比较帅的地方, 相当于&了两个判断
# 基础数据结构的操作时一致的
1. 字符串 string = 'this is a string'
2. 列表 list = [1, 2, 3, 4]
3. 元组(不变列表) tuple = (1, 2, 3, 4) #这个数据结构因为只是拥有了只读特性而已, 因此, 可以忽视他.
#下面这些都是合法的, 需要注意的是 a:b中包含a但是不包含b
list[0] # 1
list[2:3] # [3]
list[:2] #[1, 2]
list[3:] #[4]
(x,y)=(1,2) #此处可以不加圆括号
x,y=y,x #这里实现了两个变量互相换值, 很酷
# 字典 dic= {'name':'taotao', 'post':80}
dic['post'] # 80
# 流控制
if xxx: #elif是他的特色
while xxx:
for xxx in [1, 2, 3, 4]:
# 文件操作
h=open('xxx')
lines=h.readlines()
h.close
for xxx in lines:
# 函数
def funcx(x=1): #这里x参数的默认值是1
.....
funcx(5) #这里是对funcx的调用
# 类
class bigm:
'一句话描述下'
def __init__(self, nm='xxx') #这个__开始的函数是特殊函数, 可以理解为构造函数. self也是特殊参数类似于其他语言的this.
#模块
import xxx
from xxx import n1, n2
我用的python core入门的, 第一版没有仔细介绍模块确实是个遗憾, 好在作者意识到了, 在第二版的第三章就介绍了模块, 但是语焉不详, 最终参考了[python编程 从入门到实践 埃里克.马瑟斯]
# python core 中的内容
__name__ #是关键的
# namespace是一个重要的概念
# 入门到实践
1. 模块是.py文件
2. 模块中可以定义函数
3. 用import引入模块(就是文件名)
4. 文件名.xxx() 形成了对函数xxx的调用
from 模块名 import 函数名 # 这样可以指定导入某几个函数
from 模块名 import 原始函数名 as 指定函数名 # 这样可以用指定函数名调用函数
import 原始文件名 as 指定模块名 # 模块也是可以指定导入名字的
#导入类和导入函数是一样的.
同上
#在一个模块中导入另一个模块
同上
#打开文件有自动close的写法
with open('xxx.txt') as
xxx:
这里是使用xxx的地方.
python的unittest和其他的测试都很类似. 感觉太啰嗦.
经过咨询同事, 发现需要去了解下pip
#pip同样有配合python2的和python3的.
pip --version
pip3 --version
看了一遍pip貌似还有点小复杂, js的混乱状态还是有好处的, 至少导致了npm这样的工具很简单, js的单元测试也是百花争鸣的状态.
知乎的这个回答可以大大激起大家学习python的欲望: https://www.zhihu.com/question/346024815/answer/832323988
什么是机器学习
现在进入第二个点, 啥是机器学习? 简单的说, 神经网络就是机器学习的一个方法, 用数据去训练模型对于输入和结果之间关系的确定.
研究热点:
- 2000-2006年的流形学习
- 2006年-2011年的稀疏学习
- 2012年至今的深度学习
- 吴恩达预测下一波: 迁移学习
https://www.zhihu.com/question/57770020 推荐书籍:
- 周志华教授的《机器学习》,著名的「西瓜书」,【文科生也不用害怕的机器学习专业书】
- 或者李航教授的《统计学习方法》,特点是简洁高效、深入浅出,非常优美~但文科生入门大概不太行。
- Ian Goodfellow、Yoshua Bengio、Aaron Courville 合著的《深度学习》,去年 8 月出了中文版,条理清晰,不论有没有基础都可以根据情况,选择适合自己的章节阅读。
- 如果对人工智能的学科背景及应用方向感兴趣,推荐轻松有趣的《漫谈人工智能》,编著这本书的集智俱乐部中有有好几位都是人工智能行业的创业者。从基础科普到自然语言处理、群集智能、天气预测应有尽有,是一本【相当有诚意的人工智能类科普读物】。
- 概念: 深度神经网络就是深度学习. 超过 8 层的神经网络模型就叫深度学习. DNN(深度神经网络)Deep Learning
- 神经网络的分类
- 卷积神经网络(Convolutional neural networks,简称CNN)
- 深度置信网(Deep Belief Nets,简称DBN)
- 循环神经网络(RNN)
- LSTM(长期短期记忆
- GAN(生成敌对网络
- 转移学习
- 注意模型(attention model)
- Google的TensorFlow是开源深度学习系统一个比较好的实现,支持CNN、RNN和LSTM算法,是目前在图像识别、自然语言处理方面最流行的深度神经网络模型。事实上,提出“深度学习”概念的Hinton教授加入了google,而Alpha go也是google家的。
- 看sklearn、tensorflow文档
- 强化学习
- 神经网络的分类
- 推书: 人工智能-一种现代方法 stuart russell 和peter norvig
- 在很多深度学习的教科书中,尤其是10年以前的教科书中都还依然把Sigmoid当作默认的激活函数。但事实上,整流函数(ReLu)以及其拓展变形函数,如Leaky
ReLu早就成为了主流的深度学习激活函数。但因为知识的滞后性,很多课程/书籍甚至都没有介绍ReLu的章节。 - 基础学科
- 关于线性代数推荐两本书,一本是David Lay的Linear Algebra and its applications,这本书无论是初学者还是已经学习过线性代数的同学,都非常有帮助,这本书的feature就是加入了很多几何的解释,例如对矩阵的特征向量(Eigenvector)的一个几何直观的解释就是能够被这个矩阵线形转换的向量。
- 另外一本是Gilbert Strang的Linear Algebra and its applications,另外,b站有Strang老爷子最近在MIT教线性代数的课程。这里建议看英文版的书籍,中文翻译的很多概念太绕口而且不好理解。
- 概率论随机过程推荐一本Sheldon Ross的Introduction to Probability Models
我靠, 才明白, ml是机器学习的缩写.
深蓝和alphago有何不同?
- 围棋比宇宙还要大, 3的361次方.
- alphago的决策核心是mcts-蒙特卡洛树搜索。其智能核心是mcts,dcnn只是解决建模问题罢了
- mogo带着蒙特卡洛+uct大杀器横空出世
- 围棋和象棋不同, 象棋: 一个马/象=3个兵, 一个车=5个兵, 后=9个兵.
- 深蓝采用的是 α-β 搜索框架
蒙特卡洛方法和遗传算法的区别?
- 广义的蒙特卡洛包含所有的遗传算法,因为所有的遗传算法都有随机过程
- 遗传算法中有一个分支叫做CMA-ES,属于狭义的蒙特卡洛范畴,其过程就是不断的从一个高斯分布中采样,然后不断更新这个高斯分布的均值和方差
并行计算和数据处理方法
- map-reduce, 基本上是矩阵乘法的概念来分解问题. 这个是数据处理的基础抽象, 类似于逻辑学中的与或门.
- RDD是resilient distributed dataset的缩写即弹性分布式数据集, 这个是更高层次的抽象, 比如耦合电路.
优秀的参考资料
- https://www.captainbed.net/2018/11/18/whatisnn/
标准化和归一化
- https://blog.csdn.net/tjuyanming/article/details/90041546
- 描述的很清晰