机器学习--神经网络

以下是最近在学习人工智能时整理的一点心得,没有很深的东西,觉得可以简单的了解一下机器学习与神经网络是什么

机器学习

所谓机器学习,就是在大量数据的运行下,使得计算机可以进行归纳,预测

 

机器学习分为三类:监督学习,无监督学习,强化学习

抛开强化学习不讲,这里的监督学习与无监督学习的根本区别在于:有无数据的标记(即y值)

我们将输入的数据称之为数据的特征,一组特征为一个样本,需要求得的结果为标签

例:

  1. 有一组数据,格式为(身高,体重,BMI)

这里使用监督学习的效果为: 输入若干样本的特征值(身高,体重)与对应的标签(BMI),让计算机得出一个可以得出 Y=AX+b 这样的函数(称之为模型),然后对后续的样本值,根据模型计算得出标记

  2.一组数据,格式为(身高,体重)        即无y值

无监督学习:   根据身高,体重将他们聚类,如高瘦的一组,低矮的一组

监督学习

监督学习分为:分类,回归

分类,就是指y为离散数据, 如通过 特征(尺寸,logo)判别 标签(手机品牌)

回归则是指y为连续数据,如上述通过 特征(身高,体重)判别 标签(bmi)

线性回归

以上面的身高,体重 BMI为例

(但是由于三维图不方便绘画,且认为BMI与身高相关,由二维开始理解原理)

如图1-1所示,我们可以看出来有一条虚线可以拟合出身高与BMI的关系,但是如何根据样本数据求得该直线

下面说一下机器学习的步骤:

W指权重,b指偏差值,y1为预测的输出值,y为真实值      y1 = wx+b

  1. 我们不妨设w,b初始都为0,此时求得的所有y1也为0
  2. Loss函数(损失函数)指的是预测得出的y1与真实的y的平方差,(此处加上1/2是为了计算方便),由图1-2可以看出,loss函数为凸函数,在导数(即斜率)为0时,loss函数值最小,即此时的w与b最佳,但由于很难做到预测的y1完全等于y,所以在此处我们需要得出可以使得(y1-y)2尽可能小的w与b

    我们在开始y1=0时,位于a1点,由图1-2可以得出,始终沿着斜率下降的方向,我们总会走到最低点附近,此时的w与b满足loss函数最小,则y1=wx+b为我们所求模型

    具体请看公式1

    根据斜率逐渐趋近于0来使得loss损失函数最小的方式称之为梯度下降(Gradient Descent)

  3.对于y1,y1=wx+b, 因此上面的损失函数对y1求导可以解析为L对w,b求导

  又根据链式法则(图中公式),可以求出此处L对w与b的导数,然后根据求得结果重新定义w,b作为y1的模型

  根据先定义的w,b求得y1,再根据y1反推w,b并重构造,称作反向传播

  4. 接下来就很好理解了,我们将样本不断输入,使得w,b不断地重构造,最终会得出结果使得Loss函数位于最低点附近,此时的模型就符合我们的需求

  对于多个特征值来说,y1=w0x0+w1x1+w2x2…+b 同理

逻辑回归

线性回归只可以拟合普通的线性函数,但是对于不满足线性条件无法做到,因此我们引入逻辑回归,构造非线性函数

逻辑回归公式,如图公式1(在线性回归基础上做了一个转换)

在逻辑回归中,损失函数与线性函数不同,使用交叉熵公式(但是原理一至)

同线性回归,对其进行梯度下降反向传播,求出使得损失函数最小的w,b

逻辑回归是非线性回归,他可以拟合出下面这种情况(这里不谈过拟合/欠拟合的概念)

之所以逻辑回归可以这样表示,这就需要了解泰勒公式

e^x = 1+x+x^2/2!+x^3/3!+…+…

机器学习还有许多的内容,如:SVM,决策树,朴素贝叶斯…

神经网络

首先需要知道几个知识:

神经网络包含:输入层,隐层,输出层(对应输入样本特征,不可见的计算过程,输出的标签)

逻辑回归可以看做是最简单的神经网络

在计算神经网络层数时,往往不考虑输入层

逻辑回归LR与简单神经网络NN区别如图

神经网络的原理同逻辑回归 (梯度下降,反向传播)

理论证明:多层神经网络可以拟合任意函数

通过门,以及不断增加的神经元,可以得到所求函数的反函数的近似形状,然后再进行sigmod转型,得到目标函数

多层指  1~n层隐层 + 1层输出层

人工神经网络可以分为以下三种类型

DNN             深度神经网络

CNN             卷积神经网络

RNN             循环神经网络

其中,CNN常用来图像分析,        RNN用于自然语言处理,时序预测

结合智能网管业务业务存在忙时,闲时的场景具体分析,进行RNN的lstm进行时间预测分析

RNN神经网络

两层(多层)神经网络可以近似的拟合任意函数

  但是对于非一般性的函数,

  如:时间序列预测,NLP自然语言处理,机器翻译

  这些由前面多个值影响后者的函数  就需要使用到RNN(循环神经网络)

RNN神经网络与普通神经网络不同点在于: 每一次的输出,不仅受当前影响,也受前几个输入值影响

比如:

天气的变化:          可以由前几个时间段的值来进行评估

自然语言处理:      由前面的词出现的频率对其进行预测

语音识别:             根据前面的语音进行预测

具体如下图,在考虑y值时,不仅需要计算x4,还需要考虑到x1-3,进行加权求和

根据一定数量的输入样本,进行前馈传播计算出y值,然后根据反向传播重定义w,b 不断缩减误差,训练出模型

由多层神经网络可以拟合任意函数得出结论: 若阈值与前若干个阈值存在一定的联系,则在RNN网络下,一定可以求出模型,近似拟合该函数

RNN不具备长期记忆能力, 如果间隔很长,会导致梯度爆炸,反向传播时会梯度消失,训练成本很大

x0,x1 很难影响到 ht+1 反向传播亦如此

现实意义就是很难由较多时间段前的数据影响到后者

(I’m from China,……..,I speak ___  ?Chinese)

因此采用RNN特殊类型的LSTM网络

LSTM

LSTM网络的核心就是解决了RNN的梯度爆炸/消失问题,可以学习长期依赖信息

下图是LSTM隐层的实现过程:

LSTM有三个门:

忘记门,输入门,输出门

忘记门

  可以理解为当前值xt 对前面向量和ht-1 的影响,并对当前细胞状态Ct-1进行部分保留(如前面ht-1为I come from … ,当前xt为She,则将细胞状态Ct-1中遗忘掉I )

输入门

遗忘门负责将细胞状态中部分遗忘,添加则由输入门负责

输出门

经过计算后,得出输出的结果

所有RNN可以做的LSTM都可以做到,而且消除了梯度消失的问题.

搭建LSTM神经网络:

根据前20日的阈值来估计随后一天的阈值

1.引入数据,数据集按照时间排序,以[0:20][1:21]每20天的阈值 作为输入集, [21][22]…作为标签集  数据需要标准化

2. 搭建lstm神经网络,采用tensorflow框架,一层隐层,5个神经元

3.训练模型,训练数据为指定DN的前5/7个样本集,迭代10000次,以batch流输入,并保存模型

4.使用模型进行预测,

  预测对象为指定DN的后2/7个样本集

  第一组:    第一次输入层为20个时间段前的数据集合,接着将预测值插入输入层尾(即保持使用预测的值作为输入层)

  第二组:    使用测试集进行预测

结果如图所示:

蓝色       训练集的阈值

黄色       全部基于预测的值不断迭代进行的分析

绿色       以测试集真实值X进行的预测

可以看出,在全部以预测的值为基础的前提下,开始的效果很好,但若是根据该值继续进行,越往后,偏差越大

如果以每日的准确阈值来对后几日进行预测,结果于真实值相差不多

总结

神经网络,我个人理解 就是一个找出最佳拟合函数模型的实现方式,根据样本的持续输入,由误差函数反向传播,推倒出w,b,训练出合适的模型

神经网络的底层就是机器学习/线性回归,在其基础上不断增加层数,增加神经元,来进行更为复杂的映射函数求解

原文地址:https://www.cnblogs.com/cyx-garen/p/9449549.html

时间: 2024-10-28 14:29:36

机器学习--神经网络的相关文章

Python -- machine learning, neural network -- PyBrain 机器学习 神经网络

I am using pybrain on my Linuxmint 13 x86_64 PC. As what it is described: PyBrain is a modular Machine Learning Library for Python. Its goal is to offer flexible, easy-to-use yet still powerful algorithms for Machine Learning Tasks and a variety of p

机器学习——神经网络

神经网络基础概念 人工神经网络又叫神经网络,是借鉴了生物神经网络的工作原理形成的一种数学模型.神经网络是机器学习诸多算法中的一种,它既可以用来做有监督的任务,如分类.视觉识别等,也可以用作无监督的任务.同时它能够处理复杂的非线性问题,它的基本结构是神经元,如下图所示: 其中,x1.x2.x3代表输入,中间部分为神经元,而最后的hw,b(x)是神经元的输出.整个过程可以理解为输入-->处理-->输出. 由多个神经元组成的就是神经网络 如图所示: 这是一个4层结构的神经网络,layer1为输入层,

机器学习---神经网络(2)

今天主要学习了神经网络中一个重要的算法--BP(back propagation) 它是一个前馈网络,就是神经元的输出是向前传播的:其名字的意思是指最后输出的误差经由神经网络后向传播,影响每一级的权值 简单的说其思想就是:信号的正向传播 ----> 误差的反向传播:将输出误差以某种形式通过隐层向输入层逐层反传,不断更新权值. 这个博客写的很好:http://hahack.com/reading/ann2/

机器学习神经网络的一些大众误解

现在很多速成班,甚至很多大学数学都没学好的人都号称自己是什么机器学习算法专家,真的是可笑: 我是突然想到这点,就写出来记录一下: 我个人感觉要真的能把机器学习做到活学活用的水平,还是很难的,就算是我这种数学和统计出身的人,也最多只能说自己略懂一点: 上次看个句子对抗句子生成网络的文章,里面用到了policy gradient和蒙特卡洛搜索,应用在seq2seq的框架上:policy gradient是强化学习的东西,那个蒙特卡罗的方法倒是挺常见:说实话我看了一天才勉强看懂,可能我水平低: 很多人

机器学习: 神经网络中的Error函数

利用神经网络做分类的时候,可以将神经网络看成一个mapping function,从输入到输出经过复杂的非线性变换.而输出的预测值与实际的目标值总是存在一定偏差的,一般利用这种偏差建立error 函数,再利用back propagation 来训练神经网络. 我们可以探讨一下,error 函数与概率分布或者概率密度函数的关系. 二分类 先来看二分类情况(t∈{0,1}),我们假设网络最终的输出会经过一个sigmoid 函数: y=σ(a)=11+exp(?a) 0≤y(x,w)≤1, y(x,w

机器学习-神经网络算法应用(二)

1. 简单非线性关系数据集测试(XOR): X:                  Y 0 0                 0 0 1                 1 1 0                 1 1 1                 0 # -*- coding:utf-8 -*- from NeuralNetwork import NeuralNetwork import numpy as np nn = NeuralNetwork([2, 2, 1], 'tanh'

Google发布机器学习平台Tensorflow游乐场~带你玩神经网络(转载)

Google发布机器学习平台Tensorflow游乐场-带你玩神经网络 原文地址:http://f.dataguru.cn/article-9324-1.html> 摘要: 昨天,Google发布了Tensorflow游乐场.Tensorflow是Google今年推出的机器学习开源平台.而有了Tensorflow游乐场,我们在浏览器中就可以训练自己的神经网络,还有酷酷的图像让我们更直观地了解神经网络的工作原理.今 ... 网络 工具 机器学习 神经网络 Tensorflow 昨天,Google发

Python神经网络算法与深度学习视频教程人工智能算法机器学习实战视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

机器学习及其matlab实现竞争神经网络与SOM神经网络进阶与提高视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv