Machine Learning---Neural Network

Machine Learning:Neural Network

一:前言

1,Wikipedia上对Neural Network的定义:

In machine learning,artificial neural networks (ANNs) are a family of statistical learning algorithms inspired by biological neural networks (thecentral
nervous systems of animals, in particular thebrain) and are used to estimate or
approximate functions that can depend on a large number of input sand are generally unknown. Artificial neural networks are generally presented
as systems of interconnected "neurons" which can compute values from inputs, and are capable ofmachine learning as well aspattern recognition
thanks to their adaptive nature.

2,为什么要引入Neural Network?

我们前面学习了回归和分类模型,然而它们的实际应用受制于数据的规模(也就是维度灾难(curse of dimensionality))。Neural Network用于处理大量输入特征是非常有优势的,例如抽取计算机视觉中图片的像素作为输入特征,那么这将得到数量巨大的输入特征集;如果仍然回归和分类模型,学习参数所需要的时间将会是不能承受的;

二:Neural Network—Representation

1,Neural Network模型

在神经网络中,我们把第一层称为input layer,最后一层称为output layer,中间若干层都称为hidden layer。

下面我们来看一个非常简单的神经网络:

这个简单的神经网络相当于一个逻辑分类器。之所以会是这样的结果,是因为output layer上neutron的转换函数是sigmoid函数。当然这完全可以根据我们的实际问题去选择合适的activation function。

下面我们来详细的描述一下神经网络:

上图中,a(i,j)表示为第j层的第i个activation,它是由activation function转换得到的,也就是这里的g(.);一般来说,各层的activation function是一样的(除了output layer,这个需要根据最后需要的形式来确定,比如离散、连续还是multi-classification等等),当然你也可以选择使它们不一样,这样增大了实现起来的难度。Theta权重参数矩阵控制layer j到layer j+1的映射。

2,Forward Propagation Algorithm

这种Forward propagation的方式是从input layeràhidden layeràoutput layer来进行对h(x)的计算;我们并不是直接对原始数据进行建模、调参,而是利用中间层得到的结果,然而中间层的结果是由原始数据学习而来的;换言之,这有很大的灵活性,每层之间的转换可以是任何线性组合或者多项式组合等。

下面来看一下如何利用神经网络实现逻辑表达式:

通过多And、Or、Not的分析,组合成了一个小的神经网络实现了XNOR的功能。

3,神经网络的multi-classification问题

对于multi-classification,我们用了softmax activation function来表示最后的输出结果。

三,Neural Network—Learning

下面我们将以分类问题来阐述Neural Network的学习过程,类比逻辑回归得到Neural Network的Cost Function,然后用梯度下降算法求出参数。

1,Error Back Propagation Algorithm:

我们知道梯度下降算法分为两个步骤:

(1), 对Cost Function求关于参数theta的偏导数;

(2),根据偏导数对参数theta进行更新、调整;

Error Back Propagation Algorithm提供了一种高效的求偏导数的方法。

例如在上图所示的神经网络中,我们进行一般化的推导:

通过上面的推导,我们已经得到了一个高效的求解偏导数的方法:通过Forward propagation求出a(i)的值,再通过back propagation求出delta的值,然后带入式子(6)中即可;

现在我们来整合一下Neural Network Learning的整个过程,举一个具体的例子:

上面的back propagation Algorithm直接引用了上面推导的结果;

总结一下back propagation Algorithm:

2,下面介绍一下Neural Network在MATLAB中的实现技巧:

简单的说就是先把权重参数矩阵unroll成一个向量,然后利用库中现成的梯度下降算法求出最优参数,最后reshape成矩阵的形式;之所以这样做是因为现成的梯度下降算法的参数即initTheta要求必须是一个向量的形式。

3,Gradient Checking

这是一种数学上求偏导数的方法。

它可以用来校验实现的梯度下降算法是否运行正确,当二者的数据非常相似时,则表明运行的结果是正确的;若二者结果相差很大,则表明梯度下降算法没有正确运行;

4,如何初始化权重矩阵Theta的值

四,总结一下整个过程

总结匆忙,难免会有纰漏和错误,还望大家不吝指正、赐教;

----------------------------------------------------------------------------------------------------------------------

本文中课件来自斯坦福大学Andrew Ng老师的机器学习PPT

时间: 2024-10-25 22:04:51

Machine Learning---Neural Network的相关文章

Machine Learning - Neural Networks Learning: Cost Function and Backpropagation

This series of articles are the study notes of " Machine Learning ", by Prof. Andrew Ng., Stanford University. This article is the notes of week 5, Neural Networks Learning. This article contains some topic about Cost Function and Backpropagatio

Machine Learning - Neural Networks Learning: Backpropagation in Practice

This series of articles are the study notes of " Machine Learning ", by Prof. Andrew Ng., Stanford University. This article is the notes of week 5, Neural Networks Learning. This article contains some topic about how to apply Backpropagation alg

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

machine learning 之 Neural Network 1

整理自Andrew Ng的machine learning课程week 4. 目录: 为什么要用神经网络 神经网络的模型表示 1 神经网络的模型表示 2 实例1 实例2 多分类问题 1.为什么要用神经网络 当我们有大量的features时:如$x_1, x_2,x_3.......x_{100}$ 假设我们现在使用一个非线性的模型,多项式最高次为2次,那么对于非线性分类问题而言,如果使用逻辑回归的话: $g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1

Andrew Ng 的 Machine Learning 课程学习 (week5) Neural Network Learning

这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解和初步掌握机器学习的人来说是不二的选择.这门课程涵盖了机器学习的一些基本概念和方法,同时这门课程的编程作业对于掌握这些概念和方法起到了巨大的作用. 课程地址 https://www.coursera.org/learn/machine-learning 笔记主要是简要记录下课程内容,以及MATLAB

CheeseZH: Stanford University: Machine Learning Ex4:Training Neural Network(Backpropagation Algorithm)

1. Feedforward and cost function; 2.Regularized cost function: 3.Sigmoid gradient The gradient for the sigmoid function can be computed as: where: 4.Random initialization randInitializeWeights.m 1 function W = randInitializeWeights(L_in, L_out) 2 %RA

CheeseZH: Stanford University: Machine Learning Ex3: Multiclass Logistic Regression and Neural Network Prediction

Handwritten digits recognition (0-9) Multi-class Logistic Regression 1. Vectorizing Logistic Regression (1) Vectorizing the cost function (2) Vectorizing the gradient (3) Vectorizing the regularized cost function (4) Vectorizing the regularized gradi

Neural Networks Learning----- Stanford Machine Learning(by Andrew NG)Course Notes

本栏目内容来自Andrew NG老师的公开课:https://class.coursera.org/ml/class/index 一般而言, 人工神经网络与经典计算方法相比并非优越, 只有当常规方法解决不了或效果不佳时人工神经网络方法才能显示出其优越性.尤其对问题的机理不甚了解或不能用数学模型表示的系统,如故障诊断.特征提取和预测等问题,人工神经网络往往是最有利的工具.另一方面, 人工神经网络对处理大量原始数据而不能用规则或公式描述的问题, 表现出极大的灵活性和自适应性. 神经网络模型解决问题的

Deep learning与Neural Network

该文章转自深度学习微信公众号 深度学习是机器学习研究中的一个新的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本.深度学习是无监督学习的一种. 深度学习的概念源于人工神经网络的研究.含多隐层的多层感知器就是一种深度学习结构.深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示. Deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展.大

ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS

ON THE EVOLUTION OF MACHINE LEARNING: FROM LINEAR MODELS TO NEURAL NETWORKS We recently interviewed Reza Zadeh (@Reza_Zadeh). Reza is a Consulting Professor in the Institute for Computational and Mathematical Engineering at Stanford University and a