首页 > 其他分享 >深度学习基本概念简介

深度学习基本概念简介

时间:2024-04-16 15:46:31浏览次数:20  
标签:函数 sigmoid 简介 sum ReLU bmatrix 深度 theta 基本概念

一、Linear Models' Bias

上篇学习机器学习一文中,所构造的 $y = b + wx_0$ 函数是一个linear model亦即线性模型,但是linear models有缺陷的——它过于简单了。实际应用中,我们所面临的不会只是一个简单的linear model,因此我们需要更复杂的models。

image
比如上图中的红色曲线,如何找到它的表达式呢?

image

可以通过许多条蓝色的函数相加得到红色曲线的函数。所有的Piecewise Linear Curves都可以用一组类似的“蓝色函数 + 常数”来表达出来,即使是曲线也可以,如下图:

image

 


二、如何找“蓝色函数”?

Sigmoid Function
$y = c\frac{1}{1 + e ^ {-(b + wx_1)}} = c*sigmoid(b + wx_1)$
其函数图像如下表示:

image

我们可以对sigmoid函数中的参数做调整,得到不同形状的sigmoid函数,来逼近蓝色函数。
改变w可以改变sigmoid函数的斜率;改变b可以左右移动其位置;改变c可以改变其高度,如下图:
image

所以不同的常数c,截距b和斜率w就会得到不同的sigmoid函数,然后将它们加起来就能够逼近目标函数,即

\[y = b + \sum_{i}c_isigmoid(b_i + w_ix_1) \]

image

\[y = b + w_1 \longrightarrow y = b + \sum_{i}c_isigmoid(b_i + w_ix_1) \]

 


三、深度学习里的三个步骤

仿照前面ML里的三个步骤,我们也可以将其完全套在DL中

1. Function with unkonwn parameters
不同于ML里我们定义的简单的linear model,通过上面的分析我们可以得到一个全新的model——拥有更多features的model!
将前面的linear表达式代入sigmoid函数:

\[y = b + \sum_{j}w_jx_j \longrightarrow y = b + \sum_{i}c_isigmoid(b_i + \sum_{j}w_{ij}x_i) \]

其中:
\(j\)代表第\(j\)个feature(即第\(j\)天的点击量);\(i\)代表选择第\(i\)个sigmoid函数;\(w_{ij}\)表示在第\(i\)个sigmoid函数中\(x_j\)的权值
如图,分别代入计算就能得到:
image

\[r_1 = b_1 + w_{11}x_1 + w_{12}x_2 + w_{13}x_3 \]

\[r_2 = b_2 + w_{21}x_1 + w_{22}x_2 + w_{23}x_3 \]

\[r_3 = b_3 + w_{31}x_1 + w_{32}x_2 + w_{33}x_3 \]

由线性代数的知识可以发现,上面的三个式子可以写作矩阵的乘法:

\[r = b + W x \]

\[\begin{bmatrix}r_1 \\ r_2 \\ r_3 \end{bmatrix} = \begin{bmatrix}b_1 \\ b_2 \\ b_3 \end{bmatrix} + \begin{bmatrix} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \\ w_{31} & w_{32} & w_{33} \end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \\ x_3 \end{bmatrix} \]

然后将\(r\)代入sigmoid函数,记作\(a = \sigma(r)\),乘上系数\(c\),再加上\(b\)就得到最后的\(y\),即\(y = b + c^Ta\)
image

最终得到:$$y = b + c^T \sigma({\bf b} + Wx)$$(\(b\)和\(\bf b\)区别开)

将W矩阵中的行或者列取出来,与\(b\),\(\bf b\)和\(c^T\)竖着排列起来组成:

\[\theta = \begin{bmatrix} \theta_1 \\ \theta_2 \\ \theta_3 \\. \\. \\. \end{bmatrix} \]

就进入了第2步找Loss函数

2. Define Loss from Training Data
Loss函数与ML一节中讲的一样,定义函数\(L(\theta)\)
先给定一组参数代入\(y = b + c^T \sigma({\bf b} + Wx)\)计算出\(y\)的值,然后将其与真实值(label) \(\widehat{y}\)比较,得到误差\(e\),最后便可得Loss函数的表达式:

\[L = \frac{1}{N}\sum_{n}e_n \]

进而到第3步找一个最优解的步骤

3. Optimization
记 \(\theta^\star = arg min_{\theta}L\)

  • (Randomly)Pick initial value \(\theta^0\)
    gradient \(g = \begin{bmatrix} \dfrac{\partial L}{\partial \theta_1}|_{\theta = \theta^0} \\ \dfrac{\partial L}{\partial \theta_2}|_{\theta = \theta^0} \\ . \\ . \\ . \end{bmatrix}\)
    可以记作:\(g =\nabla L(\theta^0)\)(就是梯度符号)

  • Compute gradient again and again
    \(g =\nabla L(\theta^0)\) \(\theta^1 \leftarrow \theta^0 - \eta g\)
    \(g =\nabla L(\theta^1)\) \(\theta^2 \leftarrow \theta^1 - \eta g\)
    \(g =\nabla L(\theta^2)\) \(\theta^3 \leftarrow \theta^2 - \eta g\)

还有另一种计算方式,将整个L中的数据分成N个batch(批),每批数据中有B个数据,与上面的方法略有差异,每次update时,是依次从每个batch里取出数据来update,当把所有的batch更新过一遍,叫1个epoch(时期)
image

 


四、从sigmoid到ReLU

ReLU(Rectified Linear Unit)是另一种 Activation Function(激活函数),前面提到的分段Sigmoid(Hard-Sigmoid)函数的表达式可能会很难写出来,但是其可以看作是2个ReLU函数相加,ReLU函数的表达式如下: $$c*max(0, b + wx_1)$$

image

如此,我们前面y的表达式就可以变成:

\[y = b + \sum_{i}c_isigmoid(b_i + \sum_{j}w_{ij}x_i) \]

\[\longrightarrow \]

\[y = b + \sum_{2i}c_{i}max(0, b_i + \sum_{j}w_{ij}x_j) \]

注意换成ReLU函数后,\(i\)变为原来的2倍,因为2个ReLU函数才能合成一个Sigmoid函数

 


五、到底为什么叫Deep Learning ?

上面的例子里我们只套了一层激活函数就得到了y的表达式,但是人们发现套的层数多一些预测的效果就会更好一些,所以不妨多套几层:

image

其中我们用到的sigmoid或ReLU函数叫neuron(神经元),许多neuron套起来就叫neural network(神经网络)。后来人们又给它们取了新的名字,每一排的neuron叫作hidden layer(隐含层),有许多层layer所以叫作Deep Learning

image

但是层数越多不见得预测效果会越好,在课堂实例中,虽然随着层数的增加,在训练数据上的效果越来越好,但是在预测数据上误差出现了增大,这便是overfitting(过拟合)

标签:函数,sigmoid,简介,sum,ReLU,bmatrix,深度,theta,基本概念
From: https://www.cnblogs.com/GeekDragon/p/18136797

相关文章

  • React前端技术深度解析与实践
    React作为当今最热门的前端技术之一,以其组件化、高效性和灵活性等特点赢得了广大开发者的青睐。本文将深入探讨React前端技术的核心原理、实践技巧以及未来的发展趋势,帮助读者更好地理解和应用React。一、React的核心原理React的核心原理是组件化开发。组件是React应用的基本构......
  • React的核心原理:组件化开发深度解析
    React的核心原理:组件化开发深度解析React,作为当今最流行的前端框架之一,其成功的背后离不开其核心原理——组件化开发。组件化开发不仅简化了前端开发的复杂性,还提高了代码的可重用性和可维护性。本文将深入探讨React组件化开发的原理、优势以及实践中的注意事项。一、组件化开发......
  • JS混淆工具简介(一)---UglifyJS
    github:https://github.com/mishoo/UglifyJS/工具:https://lisperator.net/uglifyjs/简要介绍  UglifyJS是基于NodeJS的Javascript语法解析/压缩/格式化工具,它支持任何CommonJS模块系统的Javascript平台。  UglifyJS通过解析重新生成JS代码的语法树。该工具缩短变量......
  • JAVA各种系统架构图及其简介
    JAVA各种系统架构图及其简介1.spring架构图 Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring框架的功能可以用在任何J2EE服务器中,大多数......
  • 深度学习算法中的稀疏编码(Sparse Coding)
    【摘要】引言稀疏编码(SparseCoding)是深度学习算法中的一种重要技术,它在神经网络模型中发挥着重要的作用。本文将介绍稀疏编码的基本概念、原理以及在深度学习中的应用。稀疏编码的概念稀疏编码是一种通过寻找数据的稀疏表示来描述数据的方法。在深度学习中,稀疏编码可以将输入数......
  • 01、IS-IS简介
    IS-IS简介介绍IS-IS的定义和作用。定义中间系统到中间系统IS-IS(IntermediateSystemtoIntermediateSystem)属于内部网关协议IGP(InteriorGatewayProtocol),用于自治系统内部。IS-IS也是一种链路状态协议,使用最短路径优先SPF(ShortestPathFirst)算法进行路由计算。目的I......
  • datawhale-动手学图深度学习task01
    动手学图深度学习task1第一章:介绍充满图的世界图包括人类社会、化学相互作用、知识图谱等,可以分为自然定义的和人造的两种,图有时也称为网络,例如社交网络、经济网络等(这些情况下的网络指的不是深度神经网络)。图的现实世界应用社交网络:有个著名结论是6度分离(两个人之间可以......
  • 01、OSPFv3简介
    OSPFv3简介介绍OSPFv3的定义和作用。定义OSPF(OpenShortestPathFirst)是IETF组织开发的一个基于链路状态的内部网关协议(InteriorGatewayProtocol)。目前针对IPv4协议使用的是OSPFVersion2,针对IPv6协议使用OSPFVersion3。OSPFv3是OSPFVersion3的简称。OSPFv3......
  • JZ55 二叉树的深度
    /*structTreeNode{ intval; structTreeNode*left; structTreeNode*right; TreeNode(intx): val(x),left(NULL),right(NULL){ }};*/classSolution{public: //采用递归的方法intTreeDepth(TreeNode*pRoot){ //判空 if(pRoot==NULL) ......
  • vscode深度debug, 解决import包无法check运行流程的问题。
    解决方法:通过修改VSCode的launch.json文件。参考:用vscode调试python程序与launch.json的修改-知乎(zhihu.com)解决vscode在库里无法打断点问题-知乎(zhihu.com)问题描述:debug无法进入封装成package的包内。具体修改方法:创建launch.json文件;修改为下......