Machine Learning —— Deep Learning

Machine Learning —— Deep Learning

Ups and downs of Deep Learning

Three Steps for Deep Learning

在这里插入图片描述

Neural Network

concept

把多个Logistic Regression前后connect在一起,把一个Logistic Regression称为neuron,整个称为neural network
在这里插入图片描述
neural network里的每一个Logistic Regression都有自己的weight和bias,这些weight和bias集合在一起,就是整个network的parameter,用 θ \theta θ表示

Fully Connect Feedforward Network(全连接前馈网络)

最常见的连接方式是Fully Connect Feedforward Network,如果一个neural network的参数weight和bias已知的话,它就是一个function

  • 它的input是一个vector,output是另一个vector
  • 这个vector里面放的是样本点的feature,vector的dimension就是feature的个数
    在这里插入图片描述
    下图中,每一排表示一个layer,每个layer里面的每一个球都代表一个neuron
  • layer和layer之间neuron是两两互相连接的,layer 1的neuron output会连接给layer 2的每一个neuron作为input
  • 对整个neural network来说,它需要一个input,这个input就是一个feature的vector,而对layer 1的每一个neuron来说,它的input就是input layer的每一个dimension
  • 最后那个layer L,由于它后面没有接其它东西了,所以它的output就是整个network的output
  • 每一个neuron里面的sigmoid function,在Deep Learning中被称为activation function(激励函数),事实上它不见得一定是sigmoid function,还可以是其他function
  • 有很多层layers的neural network,被称为DNN(Deep Neural Network)

在这里插入图片描述
因为layer和layer之间,所有的neuron都是两两连接,所以它叫Fully connected的network;因为现在传递的方向是从layer 1->2->3,由后往前传,所以它叫做Feedforward network

Matrix Operation

network的运作过程,我们通常会用Matrix Operation来表示,以下图为例

  • 假设第一层hidden layers的两个neuron,它们的weight分别是 w 1 = 1 , w 2 = − 2 , w 1 ′ = − 1 , w 2 ′ = 1 w_1=1,w_2=-2,w_1^{'}=-1,w_2^{'}=1 w1=1,w2=2,w1=1,w2=1,可以将它们排成一个matrix
  • input是一个2*1的vector,将w和x相乘,加上bias的vector,就可以得到这一层的vector z
  • 经过activation function得到这一层的output
    σ ( [ 1 − 2 − 1 1 ] [ 1 − 1 ] + [ 1 0 ] ) = σ ( [ 4 2 ] ) = [ 0.98 0.12 ] \sigma( \begin{bmatrix} 1& -2\\ -1&1\\ \end{bmatrix} \begin{bmatrix} 1\\ -1\\ \end{bmatrix}+ \begin{bmatrix} 1\\ 0\\ \end{bmatrix})= \sigma( \begin{bmatrix} 4\\ 2\\ \end{bmatrix})= \begin{bmatrix} 0.98\\ 0.12\\ \end{bmatrix} σ([1121][11]+[10])=σ([42])=[0.980.12]
    在这里插入图片描述
    把这件事情写成矩阵运算的好处是,可以用GPU加速,GPU对matrix的运算是比CPU要来的快的,所以我们写neural network的时候,习惯把它写成matrix operation,然后call GPU来加速它
    在这里插入图片描述
    在这里插入图片描述
Output layer

我们可以把hidden layers看做是一个feature extractor(特征提取器),这个feature extractor就replace了我们之前手动做feature engineering,feature transformation这些事情,经过这个feature extractor得到的 x 1 , x 2 , x 3 , . . . , x k x_1,x_2,x_3,...,x_k x1,x2,x3,...,xk可以被当做一个新的feature
在这里插入图片描述
output layer可以当做一个Muli-class Classifier,它对经过feature extractor转换后的一组比较好的feature进行分类

Example Application

Handwriting Digit Recognition

这里举一个手写数字识别的例子,input是一张image,对机器来说一张image实际上就是一个vector,假设这是一张16*16的image,那它有256个pixel,对machine来说,它是一个256维的vector,image中的每一个都对应到vector中的一个dimension,简单来说,我们把黑色的pixel的值设为1,白色的pixel的值设为0

Neural network的output如果在output layer使用了softmax,那么它的output就是一个突出极大值的Probability distribution,假设我们的output是10维的话(10个数字,0~9),这个output的每一维都对应到它可能是某一个数字的几率,实际上这个neural network的作用就是计算这张image成为10个数字的几率各自有多少,几率最大(softmax突出极大值的意义所在)的那个数字,就是机器的预测值
在这里插入图片描述
在这个手写字体识别的demo里,我们唯一需要的就是一个function,这个function的input是一个256的vector,output是一个10维的vector,这个function就是neural network(这里我们用简单的Feedforward network)

  • input固定为256维,output固定为10维的feedforward neural network,实际上这个network structure就已经确定了一个function set(model)的形状
  • 在这个function set里的每一个function都可以拿来做手写数字识别,接下来我们要做的事情是用gradient descent去计算出一组参数,挑一个最适合拿来做手写数字识别的function

input、output的dimension,加上network structure,就可以确定一个model的形状,其中Deep Learning最关键的就是design这个network的structure

之前在做Logistic Regression或者是linear Regression的时候,我们对model的structure是没有什么好设计的,但是对neural network来说,我们现在已知的constraint只有input是256维,output是10维,而中间要有几个hidden layer,每个layer要有几个neuron,都是需要我们自己去设计的

Step1:Neural Network

在这里插入图片描述

Step2:Goodness of function

定义一个function的好坏,由于现在我们做的是一个Multi-class classification,所以image为数字1的label “1”告诉我们,现在的target是一个10维的vector,只有在第一维对应数字1的地方,它的值是1,其他都是0
在这里插入图片描述
input这张image的256个pixel,通过这个neural network之后,会得到一个output,称之为y;而从这张image的label中转化而来的target,称之为 y ^ \hat{y} y^,有了output和target之后,我们就计算两者之间的cross entropy(交叉熵):

C r o s s E n t r o p y : l ( y , y ^ ) = − ∑ i = 1 1 0 y ^ i l n y i Cross Entropy:l(y,\hat{y})=-\sum\limits_{i=1}^10\hat{y}_ilny_i CrossEntropy:l(y,y^)=i=110y^ilnyi

Step3:Pick the best function

调整参数,使得cross entropy越小越好,我们需要把所有data的cross entropy都sum起来,得到一个total loss L = ∑ n = 1 N l n L=\sum\limits_{n=1}^Nl^n L=n=1Nln,找出一组network的parameter θ ∗ \theta^* θ,可以minimize这个total loss,这组 θ ∗ \theta^* θ就是我们最终要找的model
在这里插入图片描述
找使total loss minimize的 θ ∗ \theta^* θ的方法就是Gradient Descent,现在的 θ ∗ \theta^* θ是一大堆的weight、bias参数

  • 先random找一个初始值,接下来去计算每一个参数对total loss的偏微分
  • 把这些偏微分全部集合起来,就叫做gradient
  • 有了这些偏微分以后,更新所有的参数,都减掉learning rate乘上偏微分的值
  • 这个process反复进行下去,最终找到一组好的参数,就做完deep learning的training
    在这里插入图片描述

Why Deep?

因为本来model的parameter越多,它cover的function set就越大,它的bias就越小,如果今天你有足够多的training data去控制它的variance,一个比较复杂、参数比较多的model,它performance比较好,是很正常的

有一个理论是这样说的,任何连续的function,它input是一个N维的vector,output是一个M维的vector,它都可以用一个hidden layer的neural network来表示,只要你这个hidden layer的neuron够多,它可以表示成任何的function,既然一个hidden layer的neural network可以表示成任何的function,而我们在做machine learning的时候,需要的东西就只是一个function而已

在这里插入图片描述
从非deep learning的方法到deep learning的方法,并不是说machine learning比较简单,而是我们把一个问题转化成了另一个问题

本来不是deep learning的model,要得到一个好的结果,往往需要做feature engineering(特征工程),也就是做feature transform,然后找一组好的feature;一开始学习deep learning的时候,好像会觉得deep learning的layers之间也是在做feature transform,但实际上在做deep learning的时候,往往不需要一个好的feature ,比如说在做影像辨识的时候,你可以把所有的pixel直接丢进去,但是在过去做图像识别,你是需要对图像抽取出一些人定的feature出来的,这件事情就是feature transform,但是有了deep learning之后,你完全可以直接丢pixel进去硬做

但是,今天deep learning制造了一个新的问题,它所制造的问题就是,你需要去design network的structure,所以你的问题从本来的如何抽取feature转化成怎么design network structure

参考

https://sakura-gh.github.io/ML-notes/ML-notes-html/8_Deep-Learning.html

机器学习人工智能领域的一个重要分支,它研究开发一种能让计算机具备自主学习能力的算法和模型。Python作为一种易学易用的编程语言,成为机器学习领域中广泛使用的工具之一。 机器学习算法基于数据的模式和规律,通过从数据中学习并自动调整模型参数,可以用来解决一些复杂的问题,如图像识别、语音识别、推荐系统等。Python提供了丰富的机器学习库和工具包,如scikit-learn、TensorFlow和PyTorch等,使得开发者可以方便地实现和应用各种机器学习算法。 深度学习机器学习的一个重要分支,它使用多层神经网络模型进行学习和训练。与传统机器学习不同,深度学习可以通过类似人脑神经元的结构来进行模式识别和数据处理。它能够处理大规模和高维度的数据,具有强大的表示学习能力和泛化能力。 Python也成为了深度学习领域中的主要编程语言之一。通过使用库和框架如Keras、PyTorch和TensorFlow,开发者可以方便地构建和训练深度神经网络。这些工具包提供了灵活和高效的接口,使得深度学习模型的开发和部署更加简单和便捷。 总之,Python作为一种易学易用的编程语言,为机器学习深度学习提供了强大的支持和工具。它使得开发者能够更加轻松地应用和实现各种机器学习算法和深度学习模型,为人工智能的发展做出了重要贡献。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值