您的位置:首页 > 新闻 > 热点要闻 > 如何申请网站空间和域名_网站前端工程师_付费恶意点击软件_搜索网络如何制造

如何申请网站空间和域名_网站前端工程师_付费恶意点击软件_搜索网络如何制造

2025/1/7 8:02:41 来源:https://blog.csdn.net/qq_41370833/article/details/144934974  浏览:    关键词:如何申请网站空间和域名_网站前端工程师_付费恶意点击软件_搜索网络如何制造
如何申请网站空间和域名_网站前端工程师_付费恶意点击软件_搜索网络如何制造

笔记是在语雀上面做的,粘贴在CSND上可能存在格式错误

机器学习的本质就是借助机器寻找一个转换函数

根据函数的输出类型,可以将机器学习进行分类

  • regression 回归任务:函数输出时一个数值
  • classification 分类任务:人类设定好选项/类别,函数的输出时选项/类别中的一个
  • structured learning : 机器创造一些有结构的信息,比如文本、图

过拟合Overfitting:在训练资料上变好,在没有训练的资料上效果边差

问题1:机器怎么寻找一个转换函数

案例:Youtube频道订阅人数的预测

步骤1:写出一个带有未知参数的函数

猜测其转换函数应该长什么样,这个函数的猜测过程就需要用到领域知识。

猜测:未来点阅次数的函式F,是前一天的点阅次数,乘上w 再加上b

  • y y y 是我们要预测的人数
  • x 1 x_1 x1是这个频道前一天总共观看的人数

名词定义

Feature: Function裡面我们已知的信息 x 1 x_1 x1

Weight: 未知参数

Bias: 未知参数,偏差值

步骤2:从训练数据里定义Loss损失函数L(b,w)

函数的输入是b和w,函数的输出是输入某个特定的b和w,模型结果是是好还是不好L越大说明模型不好,L越小说明模型好
假设有一个损失函数L(0.5k,1) ,模型为y=b+wx1 => y=0.5k+1x1(k是千人的意思)
训练数据(本案例过去的订阅次数)输入到模型(函数)中,比如x输入1月1日订阅人数4.8k,计算得到模型预测的y(1月2日订阅人数)为5.3k,但实际只有4.9k

计算方法: 求取估测的值跟实际的值(Label) 之间的差距

本案例中e取绝对值的方法称为mean absolute error(MAE)平均绝对误差

e=(y-y预测)2称为mean square error(MSE)均方误差
如果y与y预测都是概率分布,可能选择的e为coss-entropy交叉熵

步骤3:optimization 优化 让Loss值最小

优化式:w*,b* = arg m i n w , b \underset {w,b}{min} w,bminL,寻找参数w和b让L最小,将其称为w和b。

本课程用到的Gradient Descent梯度下降方法

  1. 随机选取初始值:假设只有一个参数w,随机选择一个初始点w0

  2. 计算 ∂ L ∂ W ∣ w = w 0 {\frac{\partial L}{ \partial W}}|_{w=w^0} WLw=w0

  3. 根据微分(梯度)的方向,改变参数的值,优化的目标是降低损失值。

    1. 根据微分(梯度)的方向,改变参数的值–应该降低w还是提升w取值?

      ①如果计算出来斜率为负,说明该点w0 处损失值L呈下降趋势,因此增加w就可以获取到更低的L值
      ②同理如果计算出来斜率为正,说明损失值L呈上升趋势,因此降低w值可以获取到更低的L值
      w改变的跨度取决于斜率的大小与学习率的大小,移动跨度公式: η ∂ L ∂ W ∣ w = w 0 \eta{\frac{\partial L}{ \partial W}}|_{w=w^0} ηWLw=w0
      ①斜率大说梯度大损失值改变大可以大幅度降低w。
      η \eta η表示学习速率 ,该值自己设置,在机器学习中,自己设置的固定值称为hyperparameters超参数

  4. 新的w1 = w0- η ∂ L ∂ W ∣ w = w 0 \eta{\frac{\partial L}{ \partial W}}|_{w=w^0} ηWLw=w0 ,重复操作2和操作3不断更新w的取值

  5. 什么时候停下来

    1. 自己设置上限,这个上限也是一个超参数。比如设置更新w 1000次。
    2. 理想情况:微分值为0(极小值点),不会再更新

梯度下降存在问题:有可能陷入局部最小值,不能找到全局最小值 (事实上,局部最小值不算梯度下降真正的痛点)

问题:为什么损失值可以取负数?

估测的值y跟实际的值(Label) 之间的差距在本案例中是取绝对值,不可能有负数。这里图是随便画的和本案例无关

推广到多个参数 => 类似一个参数的做法

不断更新参数,直到找到一个 w 和 b

模型的修改

利用模型预测未知日期新的观看量,发现每个7天一个循环(周一到周四观看量高,周五到周六观看量低,周末观看量增加)

原来的模型只能依据前一天的值预测当天值(随便猜测y=b+wx1),根据上图我们发现其实观看人数呈周期变化,这里猜测采用上周值预测本周值可以得到更精准的模型(对问题有了更深的理解)。

修改新模型为 y = b + ∑ j = 1 7 w j x j y=b+{\sum_{j=1}^7}{w_j}{x_j} y=b+j=17wjxj,下标j表示根据前7天的观看人次,预测当天的观看人次=> 也可以考虑更多天的观看人次

相当于将一个特征值x1 (w同)增加到了7个特征值x 1~7

神经网络

线性模型

linear models =Feature*Weight + bias => 不是要一模一样,在模型修改中的 y = b + ∑ j = 1 7 w j x j y=b+{\sum_{j=1}^7}{w_j}{x_j} y=b+j=17wjxj也是线性模型

线性模型存在严重限制Model Bias(跟前面说的变量b bias意思不同):y只会随x1线性变化 ⇒ 解决方法:需要一个更复杂的、有未知参数的function

Sigmoid Function改写步骤1:写出一个带有未知参数的函数

所有Piecewise Linear Curves分段线性曲线( 定义:由多段锯齿状的线段所组成的线 )= 常数 + 一大堆蓝色function(每一段的蓝色function可能不一样,下述案例只是举例)

=> 可以用Piecewise Linear Curves逼近任何连续曲线

在案例Youtube频道订阅人数的预测中,即使x和y的关系很复杂,但我们感觉应该还是一条连续曲线,所以只要想办法写一个带有未知数的function(常数+一堆蓝色function )

并不知道如何写出这个function,使用Sigmid Function Curves来逼近这个function

Sigmoid Function(S形函数): y = c 1 1 + e − ( b + w x 1 ) y = c\frac{1}{{1+e^{-(b+wx_1)}}} y=c1+e(b+wx1)1

调整 w , b , c w,b,c w,b,c,可以得到各种不同的sigmiod来逼近”蓝色function“,通过求和,最终近似各种不同的连续Function

总结

  1. Piecewise Linear Curves逼近任何连续曲线,Piecewise Linear Curves= 常数 + 一大堆蓝色function,所以需要表示蓝色function(但是并不清楚怎么表示)。
  2. 使用Sigmid Function Curves(可以表示任何连续曲线)通过调整来$ w,b,c $逼近这个蓝色function。
案例理解

套入这个本课程的案例,模型可以表示为$ y=b+\sum_isigmoid(b_i+w_ix_1) $(当天的观看人数和前一天的有关)

调整 b 、 w 、 c b、w、c bwc可以制造不同的蓝色function,不同的蓝色function叠加起来就可以制造出不同的Piecewise Linear Curves ,不同的Piecewise Linear Curves可以去逼近不同的连续函数

前面我们优化过,其实当天的观看人数可以和前几天的有关,模型可以表示为 y = b + ∑ i s i g m o i d ( b i + ∑ j w i j x j ) y=b+\sum_isigmoid(b_i+\sum_jw_{ij}x_j) y=b+isigmoid(bi+jwijxj)i是不同的function函数数量,j表示当前日期的前j天, w i j w_{ij} wij第i个sigmoid给第j个特征的权重


下面将i和j带入实际例子理解一下,假设这个模型由三个不同的sigmoid function叠加生成(sigmoid的数量是自己决定的超参数),当天的预测人数与前三天的观看人数有关,也就是j和i分别取1、2、3

转化为线性代数的形式

  1. b i + ∑ j w i j x j b_i+\sum_jw_{ij}x_j bi+jwijxj等价成 r = b ⃗ + 矩阵 W ∗ x r = \vec{b} + 矩阵W*x r=b +矩阵Wx形式
  2. a = s i g m o i d ( r ) = 1 1 + e − r = σ ( r ) a = sigmoid(r)=\frac1{1+e^{-r}}=\sigma(r) a=sigmoid(r)=1+er1=σ(r),将a的表示简写为 σ ( r ) \sigma(r) σ(r)
  3. 模型线性代数的表达为 y = 常数 b + c T a = 常数 b + c T σ ( r ) = 常数 b + c T σ ( b ⃗ + 矩阵 W ∗ x ⃗ ) y=常数b+c^Ta=常数b+c^T\sigma(r)=常数b+c^T\sigma(\vec{b}+矩阵W*\vec{x}) y=常数b+cTa=常数b+cTσ(r)=常数b+cTσ(b +矩阵Wx )

公式中x为feature 未知参数为矩阵W、常数b、 b ⃗ \vec{b} b c T c^T cT,一般将矩阵W每一行/列抽出来与其他向量拼在一起,将所有的参数统称为 θ \theta θ.(包含 W, b ⃗ \vec{b} b ,b…)

第二步:定义Loss损失函数L( θ \theta θ)

因为所有的参数统称为 θ \theta θ,所以Loss表示为 L ( θ ) L(\theta) L(θ)

输入x求计算出来的 y = b + c T σ ( b ⃗ + 矩阵 W ∗ x ⃗ ) y=b+c^T\sigma(\vec{b}+矩阵W*\vec{x}) y=b+cTσ(b +矩阵Wx ),还是利用平均绝对误差法计算与真实label y ^ \hat{y} y^的误差绝对值 e = ∣ y − y ^ ∣ e=|y-\hat{y}| e=yy^,损失函数 L = 1 N ∑ n e n L=\frac{1}{N}\sum_n{e_n} L=N1nen

第三步:optimization优化 找到参数使L最小

  1. 选定初始参数值(向量) θ 0 \theta_0 θ0
  2. 对每个参数求偏导/微分,每个参数求偏导组成的矩阵叫做gradient梯度有些时候简写为` ∇ \nabla , ∇ L ( θ 0 ) \nabla{L}(\theta^0) L(θ0)
  3. 更新参数,直至设定的次数

批训练Batch training

实际上, 不会一次性将全部数据用于训练一个L,而是将全部资料分成n个batch(这里的n也是一个超参数)去训练n个L。

定义

  • 1 epoch 时期= 使用所有batch的L更新一次 θ \theta θ
  • 1 update/iteration = 每更新一次参数 θ \theta θ

比如有资料N=10000,每个batch划分的资料是100,那么一共有100个batch,一次epoch里会更新100次 θ \theta θ

问题:为什么要将全部资料分成一个一个batch

todo

模型的其他变形

使用Rectified Linear Unit线性整流单元

在上述案例中,我们是将蓝色function(hard sigmoid)近似为<font style="color:#DF2A3F;">(soft)sigmoid function</font>,其实这里还有其他的做法。

比如:每一个hard sigmoid可以使用两个线性整流单元Rectified Linear Unit(ReLU)叠加

图形上的表示为一个折线(两个水平线有一个转折点),公式表示为 c max ⁡ ( 0 , b + w x 1 ) c\max(0,b+wx_1) cmax(0,b+wx1),上述的模型 y = b + ∑ i s i g m o i d ( b i + ∑ j w i j x j ) y=b+\sum_isigmoid(b_i+\sum_jw_{ij}x_j) y=b+isigmoid(bi+jwijxj)可表示为 y = b + ∑ 2 i m a x ( 0 , b i + ∑ j w i j x j ) y=b+\sum_{2i}max(0,b_i+\sum_jw_{ij}x_j) y=b+2imax(0,bi+jwijxj),其中i表示函数的条数,1个hard sigmoid需要用2个relu函数叠加而成

:::tips
这里的sigmoid和Relu在机器学习中被称为Activation funtion激活函数

:::

问题:哪一个激活函数效果更好

todo

增加嵌套层数

生成a后,可以嵌套生成a’,这里的嵌套次数是一个超参数

问题:为什么可以这样做,这样做的原因是什么

这里感觉没讲明白

我的理解:从图像来讲a表示的是一个s型曲线(c只影响高度),将一个hard sigmoid逼近为一个sigmoid。那再做一次表示再逼近一次?

Deep Learning

以前的叫法:这些sigmoid或者Relu被叫做一个neuron神经元,很多neurl被叫做Neural Network神经网络

现在的叫法:每一排Neural叫做一个hidden layer,很多hidden layer被叫做Deep,这一套技术被叫做Deep Learning深度学习

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com