网站后台用户管理系统,免费域名注册2023,精湛的网站设计,网站建设的技术需要笔记是在语雀上面做的#xff0c;粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数
根据函数的输出类型#xff0c;可以将机器学习进行分类
regression 回归任务#xff1a;函数输出时一个数值classification 分类任务#xff1a;人类设定好选项… 笔记是在语雀上面做的粘贴在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) 模型为ybwx1 y0.5k1x1(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交叉熵
步骤3optimization 优化 让Loss值最小
优化式w*b* arg m i n w , b \underset {w,b}{min} w,bminL寻找参数w和b让L最小将其称为w和b。
本课程用到的Gradient Descent梯度下降方法 随机选取初始值假设只有一个参数w随机选择一个初始点w0 计算 ∂ L ∂ W ∣ w w 0 {\frac{\partial L}{ \partial W}}|_{ww^0} ∂W∂L∣ww0 根据微分梯度的方向改变参数的值优化的目标是降低损失值。 根据微分(梯度)的方向改变参数的值–应该降低w还是提升w取值 ①如果计算出来斜率为负说明该点w0 处损失值L呈下降趋势因此增加w就可以获取到更低的L值 ②同理如果计算出来斜率为正说明损失值L呈上升趋势因此降低w值可以获取到更低的L值 w改变的跨度取决于斜率的大小与学习率的大小移动跨度公式 η ∂ L ∂ W ∣ w w 0 \eta{\frac{\partial L}{ \partial W}}|_{ww^0} η∂W∂L∣ww0 ①斜率大说梯度大损失值改变大可以大幅度降低w。 ② η \eta η表示学习速率 该值自己设置在机器学习中自己设置的固定值称为hyperparameters超参数 新的w1 w0- η ∂ L ∂ W ∣ w w 0 \eta{\frac{\partial L}{ \partial W}}|_{ww^0} η∂W∂L∣ww0 重复操作2和操作3不断更新w的取值 什么时候停下来 自己设置上限这个上限也是一个超参数。比如设置更新w 1000次。理想情况微分值为0极小值点不会再更新
梯度下降存在问题有可能陷入局部最小值不能找到全局最小值 (事实上局部最小值不算梯度下降真正的痛点) 问题为什么损失值可以取负数 估测的值y跟实际的值Label 之间的差距在本案例中是取绝对值不可能有负数。这里图是随便画的和本案例无关 推广到多个参数 类似一个参数的做法 不断更新参数直到找到一个 w 和 b 模型的修改
利用模型预测未知日期新的观看量发现每个7天一个循环(周一到周四观看量高周五到周六观看量低周末观看量增加) 原来的模型只能依据前一天的值预测当天值(随便猜测ybwx1)根据上图我们发现其实观看人数呈周期变化这里猜测采用上周值预测本周值可以得到更精准的模型(对问题有了更深的理解)。
修改新模型为 y b ∑ j 1 7 w j x j yb{\sum_{j1}^7}{w_j}{x_j} yb∑j17wjxj下标j表示根据前7天的观看人次预测当天的观看人次 也可以考虑更多天的观看人次 相当于将一个特征值x1 (w同)增加到了7个特征值x 1~7 神经网络
线性模型
linear models Feature*Weight bias 不是要一模一样在模型修改中的 y b ∑ j 1 7 w j x j yb{\sum_{j1}^7}{w_j}{x_j} yb∑j17wjxj也是线性模型
线性模型存在严重限制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}{{1e^{-(bwx_1)}}} yc1e−(bwx1)1
调整 w , b , c w,b,c w,b,c可以得到各种不同的sigmiod来逼近”蓝色function“通过求和最终近似各种不同的连续Function 总结
用Piecewise Linear Curves逼近任何连续曲线Piecewise Linear Curves 常数 一大堆蓝色function所以需要表示蓝色function(但是并不清楚怎么表示)。使用Sigmid Function Curves(可以表示任何连续曲线)通过调整来$ w,b,c $逼近这个蓝色function。
案例理解
套入这个本课程的案例模型可以表示为$ yb\sum_isigmoid(b_iw_ix_1) $(当天的观看人数和前一天的有关)
调整 b 、 w 、 c b、w、c b、w、c可以制造不同的蓝色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 ) yb\sum_isigmoid(b_i\sum_jw_{ij}x_j) yb∑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 转化为线性代数的形式
将 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 rb 矩阵W∗x形式 a s i g m o i d ( r ) 1 1 e − r σ ( r ) a sigmoid(r)\frac1{1e^{-r}}\sigma(r) asigmoid(r)1e−r1σ(r)将a的表示简写为 σ ( r ) \sigma(r) σ(r)模型线性代数的表达为 y 常数 b c T a 常数 b c T σ ( r ) 常数 b c T σ ( b ⃗ 矩阵 W ∗ x ⃗ ) y常数bc^Ta常数bc^T\sigma(r)常数bc^T\sigma(\vec{b}矩阵W*\vec{x}) y常数bcTa常数bcTσ(r)常数bcTσ(b 矩阵W∗x )
公式中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 ⃗ ) ybc^T\sigma(\vec{b}矩阵W*\vec{x}) ybcTσ(b 矩阵W∗x )还是利用平均绝对误差法计算与真实label y ^ \hat{y} y^的误差绝对值 e ∣ y − y ^ ∣ e|y-\hat{y}| e∣y−y^∣损失函数 L 1 N ∑ n e n L\frac{1}{N}\sum_n{e_n} LN1∑nen
第三步optimization优化 找到参数使L最小
选定初始参数值向量 θ 0 \theta_0 θ0对每个参数求偏导/微分每个参数求偏导组成的矩阵叫做gradient梯度有些时候简写为 ∇ \nabla ∇, ∇ L ( θ 0 ) \nabla{L}(\theta^0) ∇L(θ0)更新参数直至设定的次数 批训练Batch training
实际上 不会一次性将全部数据用于训练一个L而是将全部资料分成n个batch(这里的n也是一个超参数)去训练n个L。
定义
1 epoch 时期 使用所有batch的L更新一次 θ \theta θ1 update/iteration 每更新一次参数 θ \theta θ
比如有资料N10000每个batch划分的资料是100那么一共有100个batch一次epoch里会更新100次 θ \theta θ 问题为什么要将全部资料分成一个一个batch todo 模型的其他变形
使用Rectified Linear Unit线性整流单元
在上述案例中我们是将蓝色function(hard sigmoid)近似为font stylecolor:#DF2A3F;(soft)sigmoid function/font其实这里还有其他的做法。
比如每一个hard sigmoid可以使用两个线性整流单元Rectified Linear Unit(ReLU)叠加
图形上的表示为一个折线(两个水平线有一个转折点)公式表示为 c max ( 0 , b w x 1 ) c\max(0,bwx_1) cmax(0,bwx1)上述的模型 y b ∑ i s i g m o i d ( b i ∑ j w i j x j ) yb\sum_isigmoid(b_i\sum_jw_{ij}x_j) yb∑isigmoid(bi∑jwijxj)可表示为 y b ∑ 2 i m a x ( 0 , b i ∑ j w i j x j ) yb\sum_{2i}max(0,b_i\sum_jw_{ij}x_j) yb∑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深度学习