机器学习和神经网络入门
微软有一个图形化的深度学习在线工具–为了简化技术–技术的进步
历史
geoffery hinton辛顿、lecun勒邱恩、bengio
某个内向的德国人、李飞飞
自图灵提出机器和智能之后,两派,一个是自顶向下,用逻辑和符号系统(控制论);另一派是字下而上,模拟生物学大脑,想要获得意识。
定义
标准的机器学习问题
机器学习算法是普通算法的优化
回归问题(多分类问题):
选择一个橙子:training data
用一个表格来包括物理属性:feature和吃的时候的感觉:output variable
决策树算法,上述模型即规则库。如果用到香蕉,就是迁移学习。更多样本,增强学习。
神经网络
(人工)神经网络是机器学习的分支。
神经元的特征:兴奋性(阈值)和传导性
学习过程:神经元之间的关系变迁(有自组织性)
构造神经网络
构造一个神经元
树突 — 信号处理(s=信号乘以强度)— 传递函数
感知机
感知机:最简单的神经网络
感知机的学习:训练方法,就是监督学习。通过期望值不断修正权重。
用Java实现感知机–Neuroph:基于Java的神经网络框架
一部分是用来创建神经网络的API,另一部分是图形工具–帮助构造多层神经网络。
第一部分的api分为三块:1、neuroph.core核心库,多个类库
输入层、隐藏层、输出层:每层由神经元组成
训练规则包含一个训练集,训练集由单个训练元素组成。
类neuron,表示单个神经元的构造
类connection,表示神经元的连接
代码实现
构造神经网络
迭代几次才能使网络给出正确输出是不确定的
and要5次,or要12次,那为什么异或几十万也无法实现:线性不可分问题
如何解决:多层神经网络,如具有第一隐层,第二隐层。利用多层感知机。
更多层,会更耗时,但会更更精确
实际问题解决
输入层和输出层一般按照数据集和需求确定,隐层的神经元个数需大于输入层,需求是精度高还是运行速度快
分类和特征识别问题:疫情、比赛、股票
深度学习
深度学习是神经网络的一个大的分支,深度学习的基本结构是深度神经网络
深度神经网络大部分是至少有一个隐层的神经网络,其余小部分是递归神经网络和卷积神经网络。
机器学习的三种方式
机器学习:通过算法,从大量数据中学习规矩,从而对新的样本做预测
监督学习:
训练数据:输入数据(包括正确的训练集和错误的训练集),不断地与人工标注过的数据库作比较,然后不断调整模型
非监督学习:
模型自己去做聚类学习,常见算法:Apriori算法、K-Means算法
强化学习:
连续决策的过程。与监督学习的区别是,当不知道标注是什么的时候,给一个回报函数,回报函数决定当前状态得到什么样的结果,数学本质是一个马尔科夫决策过程。最终的目的是决策过程中整体的回报函数期望最优。
或者说,通过一个过程来回的调整所谓的“标注数据”
但是,当遇到高维数据的时候(游戏),处理数据的速度跟不上画面速度。此时要求助于深度学习
通过强化学习引入深度学习
深度学习是神经网络的一个大的分支,深度学习的基本结构是深度神经网络。用韦恩图来表示
特征
特征是机器学习的原材料
特征粒度:我们在一个什么粒度上表示特征,才能发挥作用?
任何事物都可以划分成粒度合适的浅层特征,而这个浅层特征一般就是我们的第二层输入
结构性特征具有明显的层级概念,从较小粒度划分,再用划分的基本特征组成上层特征,以此类推,可以展示特征的结构性。
从2006年开始深度学习爆火,为什么?几篇划时代性的论文:
1、a fast learning algorithm for deep belief nets
2.advances in neural information processing systems
3.advances in neural information processing systems
具体而言,1、非监督学习被用来训练各个层
2、每个层次学习的内容作为下一个层的输入
3、用监督学习来调整层与层之间的权重
如何训练有多个隐层的感知机:bp算法
由信号正向传播和误差反向传播
核心思想:在反向传播上将所得误差分摊给各层所有的单元,修正权值
一般在5层以内的神经网络中使用
深度学习的常用方法
深度学习是一个算法,但是特征的抽取过程是一个抽象的问题
以前如k-means等聚类都是对一个问题有解,但是深度学习不同
如何选取和如何训练?
卷积神经网络cnn
一个模型架构:一种特殊的对图像识别的方式,属于带有前向反馈的网络