李宏毅-B站机器学习视频课件Gradient Descent (v2)
李宏毅机器学习课程——Lifelonglearning学习笔记
![李宏毅机器学习课程——Lifelonglearning学习笔记](https://img.taocdn.com/s3/m/bf0eec5532687e21af45b307e87101f69e31fb02.png)
李宏毅机器学习课程——Lifelonglearning学习笔记概述lifelong learning⾮常直观,意思是机器不能前边学后边忘。
常见的⽅法是对前边的task中学习出来的参数加⼀个保护系数,在后⾯的任务中,训练参数时,对保护系数⼤的参数很难训练,⽽保护系数⼩的参数则容易⼀些。
下⾯的图⾮常直观,颜⾊的深浅代表loss的⼤⼩,颜⾊越深loss越⼩。
在task1中θ2的变化对loss的变化⾮常敏感,⽽θ1则不敏感,所以在task2中尽量只通过改变θ1来减⼩loss,⽽不要改变θ2。
在lifelong learning中,loss的计算公式如下:L′(θ)=L(θ)+λΣi b i(θi−θb i)2其中b i就是对θ的保护系数,θi表⽰本次task中需要学习的参数,θb i是从之前的task中学习到的参数。
不同的⽅法差异就在于b i的计算。
这⾥将会结合Coding整理⼀下遇到的三个⽅法。
Coding这部分针对HW14,介绍了EWC,MAS,SCP三种⽅法,这⾥讲解⼀下具体的代码实现,并定性地分析⼀下这些⽅法是如何把哪些重要的参数保护起来。
EWCEWC中不同的保护系数f i使⽤如下的⽅法计算得到:F=[∇log(p(y n|x n,θ∗A))∇log(p(y n|x n,θ∗A))T]F的对⾓线的各个数就是各个θ的保护系数。
p(y n|x n,θ∗A)指的就是模型在给点之前 task 的 data x n以及给定训练完 task A (原来)存下来的模型参数θ∗A得到y n(x n对应的 label ) 的后验概率。
其实对参数θi,它的保护系数就是向量log(p(y n|x n,θ∗A))对θ1的偏导数∂log(p(y n|x n,θ∗A))∂θ1与⾃⾝的内积。
当对这个参数敏感时,这个偏导数会变⼤,当预测结果正确率⾼时,p(y n|x n)也会⾼,最终都会使的保护系数变⼤。
某⼀个参数⽐较敏感,这个参数下正确率⾼时,这个参数就会被很好地保护起来。
最优化问题——梯度下降法
![最优化问题——梯度下降法](https://img.taocdn.com/s3/m/f087095fff4733687e21af45b307e87101f6f8f8.png)
最优化问题——梯度下降法1、⽆约束最优化问题求解此问题的⽅法⽅法分为两⼤类:最优条件法和迭代法。
2、最优条件法我们常常就是通过这个必要条件去求取可能的极⼩值点,再验证这些点是否真的是极⼩值点。
当上式⽅程可以求解的时候,⽆约束最优化问题基本就解决了。
实际中,这个⽅程往往难以求解。
这就引出了第⼆⼤类⽅法:迭代法。
最优条件法:最⼩⼆乘估计3、迭代法(1)梯度下降法(gradient descent),⼜称最速下降法(steepest descent)梯度下降法是求解⽆约束最优化问题的⼀种最常⽤的⽅法。
梯度下降法是迭代算法,每⼀步需要求解⽬标函数的梯度向量。
必备条件:函数f(x)必须可微,也就是说函数f(x)的梯度必须存在优点:实现简单缺点:最速下降法是⼀阶收敛的,往往需要多次迭代才能接近问题最优解。
算法A.1(梯度下降法)输⼊:⽬标函数f(x),梯度函数g(x)=▽f(x),计算精度ε;输出:f(x)的极⼩点x*总结:选取适当的初值x(0),不断迭代,更新x的值,进⾏⽬标函数的极⼩化,直到收敛。
由于负梯度⽅向是使函数值下降最快的⽅向,在迭代的每⼀步,以负梯度⽅向更新x的值,从⽽达到减少函数值的⽬的。
λk叫步长或者学习率;梯度⽅向g k=g(x(k))是x=x(k)时⽬标函数f(x)的⼀阶微分值。
学习率/步长λ的确定:当f(x)的形式确定,我们可以通过求解这个⼀元⽅程来获得迭代步长λ。
当此⽅程形式复杂,解析解不存在,我们就需要使⽤“⼀维搜索”来求解λ了。
⼀维搜索是⼀些数值⽅法,有0.618法、Fibonacci法、抛物线法等等,这⾥不详细解释了。
在实际使⽤中,为了简便,也可以使⽤⼀个预定义的常数⽽不⽤⼀维搜索来确定步长λ。
这时步长的选择往往根据经验或者通过试算来确定。
步长过⼩则收敛慢,步长过⼤可能震荡⽽不收敛。
如下图:当⽬标函数是凸函数时,梯度下降法的解是全局最优解。
但是,⼀般情况下,往往不是凸函数,所以其解不保证是全局最优解。
李宏毅2021春机器学习课程笔记——生成对抗模型模型
![李宏毅2021春机器学习课程笔记——生成对抗模型模型](https://img.taocdn.com/s3/m/d8f14174793e0912a21614791711cc7931b778b8.png)
李宏毅2021春机器学习课程笔记——⽣成对抗模型模型本⽂作为⾃⼰学习李宏毅⽼师2021春机器学习课程所做笔记,记录⾃⼰⾝为⼊门阶段⼩⽩的学习理解,如果错漏、建议,还请各位博友不吝指教,感谢!!概率⽣成模型概率⽣成模型(Probabilistic Generative Model)简称⽣成模型,指⼀系列⽤于随机⽣成可观测数据的模型。
假设在⼀个连续或离散的⾼维空间\(\mathcal{X}\)中,存在⼀个随机向量\(X\)服从⼀个未知的数据分布\(p_r(x), x \in\mathcal{X}\)。
⽣成模型根据⼀些可观测的样本\(x^{(1)},x^{(2)}, \cdots ,x^{(N)}\)来学习⼀个参数化的模型\(p_\theta(x)\)来近似未知分布\(p_r(x)\),并可以⽤这个模型来⽣成⼀些样本,使得⽣成的样本和真实的样本尽可能地相似。
⽣成模型的两个基本功能:概率密度估计和⽣成样本(即采样)。
隐式密度模型在⽣成模型的⽣成样本功能中,如果只是希望⼀个模型能⽣成符合数据分布\(p_r(x)\)的样本,可以不显⽰的估计出数据分布的密度函数。
假设在低维空间\(\mathcal{Z}\)中有⼀个简单容易采样的分布\(p(z)\),\(p(z)\)通常为标准多元正态分布\(\mathcal{N}(0,I)\),我们⽤神经⽹络构建⼀个映射函数\(G : \mathcal{Z} \rightarrow \mathcal{X}\),称为⽣成⽹络。
利⽤神经⽹络强⼤的拟合能⼒,使得\(G(z)\)服从数据分布\(p_r(x)\)。
这种模型就称为隐式密度模型(Implicit Density Model)。
隐式密度模型⽣成样本的过程如下图所⽰:⽣成对抗⽹络⽣成对抗⽹络(Generative Adversarial Networks,GAN)是⼀种隐式密度模型,包括判别⽹络(Discriminator Network)和⽣成⽹络(Generator Network)两个部分,通过对抗训练的⽅式来使得⽣成⽹络产⽣的样本服从真实数据分布。
2024版机器学习ppt课件
![2024版机器学习ppt课件](https://img.taocdn.com/s3/m/50baf755a200a6c30c22590102020740bf1ecd4d.png)
机器学习ppt课件contents •机器学习概述•监督学习算法•非监督学习算法•神经网络与深度学习•强化学习与迁移学习•机器学习实践案例分析目录01机器学习概述03重要事件包括决策树、神经网络、支持向量机等经典算法的提出,以及深度学习在语音、图像等领域的突破性应用。
01定义机器学习是一门研究计算机如何从数据中学习并做出预测的学科。
02发展历程从符号学习到统计学习,再到深度学习,机器学习领域经历了多次变革和发展。
定义与发展历程计算机视觉自然语言处理推荐系统金融风控机器学习应用领域用于图像识别、目标检测、人脸识别等任务。
根据用户历史行为推荐相似或感兴趣的内容。
用于文本分类、情感分析、机器翻译等任务。
用于信贷审批、反欺诈、客户分群等场景。
A BC D机器学习算法分类监督学习包括线性回归、逻辑回归、决策树、随机森林等算法,用于解决有标签数据的预测问题。
半监督学习结合监督学习和无监督学习的方法,利用部分有标签数据进行训练。
无监督学习包括聚类、降维、异常检测等算法,用于解决无标签数据的探索性问题。
强化学习通过与环境交互来学习策略,常用于游戏AI 、自动驾驶等领域。
02监督学习算法线性回归与逻辑回归线性回归一种通过最小化预测值与真实值之间的均方误差来拟合数据的算法,可用于预测连续型变量。
逻辑回归一种用于解决二分类问题的算法,通过sigmoid函数将线性回归的输出映射到[0,1]区间,表示样本属于正类的概率。
两者联系与区别线性回归用于回归问题,逻辑回归用于分类问题;逻辑回归在线性回归的基础上引入了sigmoid函数进行非线性映射。
支持向量机(SVM)SVM原理SVM是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略是使间隔最大化,最终可转化为一个凸二次规划问题的求解。
核函数当数据在原始空间线性不可分时,可通过核函数将数据映射到更高维的特征空间,使得数据在新的特征空间下线性可分。
SVM优缺点优点包括在高维空间中有效、在特征维度高于样本数时依然有效等;缺点包括对参数和核函数的选择敏感、处理大规模数据效率低等。
李宏毅深度学习(一):深度学习模型的基本结构
![李宏毅深度学习(一):深度学习模型的基本结构](https://img.taocdn.com/s3/m/8c1bd656a9114431b90d6c85ec3a87c240288a35.png)
李宏毅深度学习(⼀):深度学习模型的基本结构李宏毅深度学习(⼀):深度学习模型的基本结构转⾃简书的⼀位⼤神博主:下⾯开始正题吧!1、全连接神经⽹络(Fully Connected Structure)最基本的神经⽹络⾮全连接神经⽹络莫属了,在图中,a是神经元的输出,l代表层数,i代表第i个神经元。
两层神经元之间两两连接,注意这⾥的w代表每条线上的权重,如果是第l-1层连接到l层,w的上标是l,下表ij代表了第l-1层的第j个神经元连接到第l层的第i个神经元,这⾥与我们的尝试似乎不太⼀样,不过并⽆⼤碍。
所以两层之间的连接矩阵可以写为如下的形式:每⼀个神经元都有⼀个偏置项:这个值记为z,即该神经元的输⼊。
如果写成矩阵形式如下图:针对输⼊z,我们经过⼀个激活函数得到输出a:常见的激活函数有:这⾥介绍三个:sigmoidSigmoid 是常⽤的⾮线性的激活函数,它的数学形式如下:特别的,如果是⾮常⼤的负数,那么输出就是0;如果是⾮常⼤的正数,输出就是1,如下图所⽰:.sigmoid 函数曾经被使⽤的很多,不过近年来,⽤它的⼈越来越少了。
主要是因为它的⼀些 缺点:**Sigmoids saturate and kill gradients. **(saturate 这个词怎么翻译?饱和?)sigmoid 有⼀个⾮常致命的缺点,当输⼊⾮常⼤或者⾮常⼩的时候(saturation),这些神经元的梯度是接近于0的,从图中可以看出梯度的趋势。
所以,你需要尤其注意参数的初始值来尽量避免saturation的情况。
如果你的初始值很⼤的话,⼤部分神经元可能都会处在saturation的状态⽽把gradient kill掉,这会导致⽹络变的很难学习。
Sigmoid 的 output 不是0均值. 这是不可取的,因为这会导致后⼀层的神经元将得到上⼀层输出的⾮0均值的信号作为输⼊。
产⽣的⼀个结果就是:如果数据进⼊神经元的时候是正的(e.g. x>0 elementwise in f=wTx+b),那么 w 计算出的梯度也会始终都是正的。
李宏毅-B站机器学习视频课件BP全
![李宏毅-B站机器学习视频课件BP全](https://img.taocdn.com/s3/m/69c37214ff4733687e21af45b307e87100f6f869.png)
Gradient Descent
Network parameters
Starting
0
Parameters
L
L w1
L w
2
L b1
L b2
w1 , w2 ,, b1 , b2 ,
b
4
2
=
′
’’
′ ′′
(Chain rule)
=
+
′ ′′
Assumed
?
?
3
4
it’s known
Backpropagation – Backward pass
Compute Τ for all activation function inputs z
Chain Rule
y g x
Case 1
z h y
x y z
Case 2
x g s
y hs
x
s
z
y
dz dz dy
dx dy dx
z k x, y
dz z dx z dy
ds x ds y ds
Backpropagation
2
Compute Τ for all parameters
Backward pass:
Compute Τ for all activation
function inputs z
Backpropagation – Forward pass
李宏毅机器学习作业2
![李宏毅机器学习作业2](https://img.taocdn.com/s3/m/46b071b6fc0a79563c1ec5da50e2524de518d0d0.png)
李宏毅机器学习作业2尚未完成,先做代码保存⽤。
# 判断⼯资是否⼤于50kimport numpy as npimport pandas as pddef data_process(data):print(data.shape)data = np.array(data)# 处理y_train的数据,并统计⼯资超过50k的⼈数和⼩于50k的⼈数y_train = data[:, -1]for i in range(y_train.shape[0]): # 超过50k的令为0,⼩于50k的令为1if y_train[i] != ' 50000+.':y_train[i] = 0else:y_train[i] = 1passpasspassnumber_more_50k = 0number_less_50k = 0for i in range(y_train.shape[0]):if y_train[i] == 1:number_more_50k += 1else:number_less_50k += 1passpasspass# 对于x_train中的数据进⾏处理x_train = data[:, 1:-1]for i in range(x_train.shape[0]):# ⼯作属性x_train[i, 1] = x_train[i, 1].replace("Private", '0').replace("Not in universe", '1').\replace('Self-employed-not incorporated', '2').replace('Local government', '3').\replace('Self-employed-incorporated', '4').replace('State government', '5').\replace('Federal government', '6').replace('Never worked', '7').replace('Without pay', '8')# 受教育程度x_train[i, 4] = x_train[i, 4].replace('High school graduate', '0').replace('Some college but no degree', '1').\replace('Bachelors degree(BA AB BS)', '2').replace('Masters degree(MA MS MEng MEd MSW MBA)', '3').\ replace('Children', '4').replace('10th grade', '5').replace('7th and 8th grade', '6').\replace('11th grade', '7').replace('Associates degree-occup /vocational', '8').\replace('Associates degree-academic program', '9').replace('9th grade', '10').\replace('Prof school degree (MD DDS DVM LLB JD)', '11').replace('5th or 6th grade', '12').\replace('Doctorate degree(PhD EdD)', '13').replace('12th grade no diploma', '14').\replace('1st 2nd 3rd or 4th grade', '15').replace('Less than 1st grade', '16')# 婚姻情况x_train[i, 7] = x_train[i, 7].replace('Married-civilian spouse present', '0').replace('Never married', '1').\replace('Divorced', '2').replace('Widowed', '3').replace('Separated', '4').\replace('Married-spouse absent', '5').replace('Married-A F spouse present', '6')# ⼯作类型x_train[i, 8] = x_train[i, 8].replace("Not in universe or children", '0').replace('Retail trade', '1').\replace('Manufacturing-durable goods', '2').replace('Education', '3').\replace('Manufacturing-nondurable goods', '4').replace('Finance insurance and real estate', '5').\replace('Construction', '6').replace('Business and repair services', '7').\replace('Other professional services', '8').replace('Public administration', '9').\replace('Medical except hospital', '10').replace('Transportation', '11').\replace('Hospital services', '12').replace('Wholesale trade', '13').replace('Agriculture', '14').\replace('Personal services except private HH', '15').replace('Social services', '16').\replace('Entertainment', '17').replace('Communications', '18').\replace('Utilities and sanitary services', '19').replace('Private household services', '20').\replace('Mining', '21').replace('Forestry and fisheries', '22').replace('Armed Forces', '23')# ⼯作职位x_train[i, 9] = x_train[i, 9].replace('Not in universe', '0').replace('Professional specialty', '1').\replace('Executive admin and managerial', '2').replace('Adm support including clerical', '3').\replace('Sales', '4').replace('Other service', '5').replace('Precision production craft & repair', '6').\replace('Machine operators assmblrs & inspctrs', '7').replace('Transportation and material moving', '8').\replace('Handlers equip cleaners etc', '9').replace('Technicians and related support', '10').\replace('Farming forestry and fishing', '11').replace('Protective services', '12').\replace('Private household services', '13').replace('Armed Forces', '14')# ⼈种x_train[i, 10] = x_train[i, 10].replace('White', '0').replace('Black', '1').\replace('Asian or Pacific Islander', '2').replace('Other', '3').replace('Amer Indian Aleut or Eskimo','4')# 性别x_train[i, 12] = x_train[i, 12].replace('Male', '0').replace('Female', '1')# 创建⼀个新的矩阵,将需要的参数放进去x_train_now = np.arange(12*54256).reshape(54256, 12)x_train_now[:, 0] = x_train[:, 0]x_train_now[:, 1] = x_train[:, 1]x_train_now[:, 2] = x_train[:, 4]x_train_now[:, 3] = x_train[:, 7]x_train_now[:, 4] = x_train[:, 8]x_train_now[:, 5] = x_train[:, 9]x_train_now[:, 6] = x_train[:, 10]x_train_now[:, 7] = x_train[:, 12]x_train_now[:, 8] = x_train[:, 16]x_train_now[:, 9] = x_train[:, 17]x_train_now[:, 10] = x_train[:, 18]x_train_now[:, 11] = x_train[:, 38]x_train_now.astype('float')print(x_train_now)return x_train_now, y_train, number_more_50k, number_less_50kdef train(x_train, y_train, epoch, number_more_50k, number_less_50k):# 初始化各类参数learning_rate = 0.001loss = 0bias = 0weight = np.zeros(54256*12).reshape(54256, 12)pc_1 = number_more_50k / (number_less_50k + number_more_50k) # ⼯资⼤于50k的概率 pc_2 = number_less_50k / (number_less_50k + number_more_50k) # ⼯资⼩于50k的概率def valid(x_train_valid, y_train_valid):loss = 0def main():data = pd.read_csv("E:/BaiduNetdiskDownload/cs_data/hw2/hw2/train.csv")epoch = 2000x_data, y_data, number_more_50k, number_less_50k = data_process(data)print(x_data.shape) # ⽬前有12个输⼊的参数,⼀个参数有54256组数据x_train = x_data[:48228, ...] # 训练集48228个x_valid = x_data[48228:, ...]y_train = y_data[:48228, ...]y_valid = y_data[48228:, ...] # 验证集6028个train(x_train, y_train, epoch, number_more_50k, number_less_50k)valid(x_valid, y_valid)if __name__ == '__main__':main()。
机器学习 李宏毅课程介绍
![机器学习 李宏毅课程介绍](https://img.taocdn.com/s3/m/a89b1ef4aeaad1f346933f67.png)
X:
(speech) Chat-bot
Y : “歡迎大家來修課”
(transcription)
X:
“How are you?” (what a user says)
Y:
“I’m fine.” (response of machine)
Output Matrix
Image to Image
f :
Ref: https:///pdf/1611.07004v1.pdf
Text to Image
X : “this white and yellow flower
have thin white petals and a round yellow stamen”
Y:
ref: https:///pdf/1605.05396.pdf
Challenge of Structured Output
• The output space is very sparse: • In classification, each class has some examples. • In structured learning, most of the possible outputs never exist • Because the output components have dependency, they should be considered globally.
Output Sequence f
Machine Translation
: X Y
X : “機器學習及其深層與
結構化” (sentence of language 1) Speech Recognition
Y : “Machine learning and
2024《机器学习》ppt课件完整版
![2024《机器学习》ppt课件完整版](https://img.taocdn.com/s3/m/10dc919151e2524de518964bcf84b9d529ea2c5c.png)
《机器学习》ppt课件完整版•引言•机器学习基础知识•监督学习算法目录•无监督学习算法•深度学习基础•强化学习与迁移学习•机器学习实践与应用引言机器学习的定义与目标定义目标机器学习的目标是让计算机系统能够自动地学习和改进,而无需进行明确的编程。
这包括识别模式、预测趋势以及做出决策等任务。
早期符号学习01统计学习阶段02深度学习崛起0301020304计算机视觉自然语言处理推荐系统金融风控机器学习基础知识包括结构化数据(如表格数据)和非结构化数据(如文本、图像、音频等)。
数据类型特征工程特征选择方法特征提取技术包括特征选择、特征提取和特征构造等,旨在从原始数据中提取出有意义的信息,提高模型的性能。
包括过滤式、包装式和嵌入式等,用于选择对模型训练最有帮助的特征。
如主成分分析(PCA )、线性判别分析(LDA )等,用于降低数据维度,减少计算复杂度。
数据类型与特征工程损失函数与优化算法损失函数优化算法梯度下降变种学习率调整策略模型评估与选择评估指标评估方法模型选择超参数调优过拟合模型在训练集上表现很好,但在测试集上表现较差,泛化能力不足。
欠拟合模型在训练集和测试集上表现都不佳,未能充分学习数据特征。
防止过拟合的方法包括增加数据量、使用正则化项、降低模型复杂度等。
解决欠拟合的方法包括增加特征数量、使用更复杂的模型、调整超参数等。
机器学习中的过拟合与欠拟合监督学习算法线性回归与逻辑回归线性回归逻辑回归正则化二分类问题核技巧软间隔与正则化030201支持向量机(SVM )决策树与随机森林剪枝决策树特征重要性随机森林一种集成学习方法,通过构建多棵决策树并结合它们的输出来提高模型的泛化性能。
Bagging通过自助采样法(bootstrap sampling)生成多个数据集,然后对每个数据集训练一个基学习器,最后将所有基学习器的输出结合起来。
Boosting一种迭代式的集成学习方法,每一轮训练都更加关注前一轮被错误分类的样本,通过加权调整样本权重来训练新的基学习器。