现在,我们将通过定义 DeepAR 估计模型的各种超参数来初始化该模型,具体参数如下: freq:该参数定义时间序列数据的频率。 这里设置为 (24 * 5),表示模型回顾的时间段相当于 5 天(假设每个时间步长对应一个小时)。 prediction_length:预测长度,该参数指定模型应生成多远的预测。 DeepAR 预测股票 DeepAR 建立了一个全局模型,适用于多步骤预测、多序列预测,并能提供具有不确定性的预测。我们用沃尔玛商店每周销售额的多个时间序列测试了 DeepAR 的预测能力。 DeepAR是亚马逊推出的一种基于神经网络的概率性时间序列预测模型,它专门针对具有类似趋势和周期性的多元时间序列数据进行了优化,非常适合对一篮子股票的联合价格序列进行建模和预测。 (883,5) 和 (156,5)。 时间序列数据应包含开始日期、目标数据和数据频率。GluonTS 数据格式要求包含这三个要素。在下面的代码中,我们将数据集转换为与 GluonTS 兼容的格式。
序列概率模型的两个基本问题 序列概率模型与一般的概率模型类似,主要面临两个基本问题: 概率密度估计(Probability Density Estimation): 问题描述: 给定一组序列数据 应用: 样本生成在生成式模型中非常重要,例如,在自然语言生成、图像生成、音乐生成等任务中,我们希望模型能够生成符合特定规律或者语境的新序列。 解决这两个问题的方法通常依赖于具体的序列概率模型。 这些模型在深度学习中被广泛应用,能够学习并捕捉序列数据中的复杂关系,从而进行概率密度估计和样本生成。 一、序列概率模型 1. N元统计模型使用 N 元语法模型来建模条件概率。 深度序列模型: 基于深度学习的方法,使用神经网络来建模条件概率。 深度序列模型通常能够更灵活地捕捉序列中的复杂关系,但在某些情况下,N元统计模型可能仍然是一个有效的选择。 2. 序列生成
many-to-one 模型 情感分类系统就是many-to-one模型,在网上完成一句或者一段话的评论,该系统就会根据输入的内容进行分类,输出一个0-5之间的整数评分。 ? 这里会引入一个参数k,表示负采样k次,在小数据集上采用5-20范围内的数;在大数据集上则采用2-5范围内的数字。即数据集越小,k选值越大。 输入一句法语,模型会输出英文的翻译。我们对输入的 5 个法语序列,分别标以 x<1>,x<2>...x<5>;对应的输出序列为 y<1>,y<2>.....y<6>。 对输入序列构建一个由 RNN 构成的编码器(Encoder)网络。每次向模型喂入一个法语单词,然后模型通过理解输入序列的内容,会输出一个向量来表示输入序列。 这个模型借鉴了经典的 AlexNet 模型,将最后的 softmax 层去掉,连接上一个由 RNN 构成的解码器网络。
. - 加法模型 模型最终可描述为:$F_M(x)=\sum_{m=1}^{M}T(x;\theta_{m})$ 模型一共训练M轮,每轮产生一个弱分类器$T(x;\theta_m)$,弱分类器的损失函数 argmin\_{\theta\_m}\sum\_{i=1}^{N}L\{y\_i,F\_{m-1}(x\_i)+T\_m(x\_i;\theta\_m)\} gbdt在每轮迭代的时候,都去拟合损失函数在当前模型下的负梯度 1.结合了多个弱分类器,是集成学习,所以泛化能力和准确率更高 2.SVM对于训练集不同的维度,数据量的大小,核函数的选择直接决定了模型的训练效果.gbdt相较于SVM和LR更不容易过拟合,因为它的超参学习能力较好 1.框架参数 步长 - 选择一个较大的步长 迭代次数或者说学习器的个数 - 100左右 学习率$\eta$ 损失函数 - 分类问题和回归问题不一样(分类问题有对数似然和指数似然函数;回归模型有均方误差, 1.优点 泛化能力强,不容易过拟合 不需要复杂的特征工程 2.缺点 难以实行并行化 模型复杂度较高,深入分析和调优有一定难度 2.XgBoost(Extreme Gradient Boosting) 1
本文主要对CNN领域的经典模型进行汇总,算是对近期的学习做一个小总结。 CNN模型汇总 一、LeNet5 模型 LeNet5 诞生于 1994 年,是最早的卷积神经网络之一,并且推动了深度学习领域的发展。 之后一切变得清晰起来…… 二、AlexNet 模型 2012年,Hinton的学生Alex Krizhevsky提出了深度卷积神经网络模型AlexNet,它可以算是LeNet的一种更深更宽的版本。 现在我们GPU的显存可以放下全部模型参数,因此只考虑一块GPU的情况即可。 3×3 过滤器(filter),并把它们组合作为一个卷积序列进行处理的网络。
为什么选择序列模型 2. 数学符号 3. 循环Recurrent 神经网络模型 4. 通过时间的反向传播 5. 不同类型的循环神经网络 6. 语言模型和序列生成 7. 对新序列采样 8. 为什么选择序列模型 ? 有些问题,输入数据 X 和 输出数据 Y 都是序列,X 和 Y 有时也会不一样长。在另一些问题里,只有 X 或 只有 Y 是序列 2. 数学符号 ? ? 3. image.png 最小化损失,通过梯度下降来更新参数 5. 不同类型的循环神经网络 ? 6. 对新序列采样 训练一个序列模型之后,要想了解到这个模型学到了什么,一种非正式的方法就是进行一次新序列采样 ? 还有比较经典的是LSTM,即长短时记忆网络,见下节 10.
SQL经典5道题 1:假设有一个“职工”表,表结构如下:(14分) 职工号 姓名 年龄 月工资 部门号 电话 办公室 1 张三 25 2000 1 12345 101 2 李四 26 1500 1 54321 FROM 职工,社会团体,参加 WHERE 社会团体.编号=参加.编号 AND 社会团体.负责人=职工.职工号 GROUP BY 参加.编号 HAVING COUNT(参加.编号)>100; 5: 3) 将由供应商S5供给工程代码为J4的零件P6改为由S3供应,并将零件P6的产地改为S3供货商的所在城市。 4)从供应商关系中删除S2的记录,并从供应零件关系中删除相应的记录。 供应商代码=供应零件.供应商代码AND 供应零件.工程代码=工程.工程代码 AND 供应商.所在城市='上海'; 3.UPDATE 供应零件 SET 供应商代码='S3' WHERE 供应商代码='S5'
1.1 什么是序列模型 在进行语音识别时,给定了一个输入音频片段 X,并要求输出片段对应的文字记录 Y,这个例子中的输入和输出都输序列数据。 情感分类问题中,输入是一串文字,输出是情感的评价 DNA 序列分析问题中,输入是一段 DNA 序列,用来标记出 DNA 序列的那些片段是用于匹配蛋白质的。 在命名实体识别问题中,会给定一个句子,要求识别出句子中的人名 虽然都是序列模型,但是序列问题存在着差异,例如:有的是输入数据是一个序列,而输出不是序列。有的是输出数据是一个序列,而输入不是一个序列。 1.2 序列模型数学符号定义 示例:命名实体识别 Name entity recognition system 输入: Harry Potter and Hermione Granger invented 假设设定模型的输出是一个与输入句式对应的序列,即通过 0 或 1 来表示输入的句式中的单词是否是人名或地名的一部分。例如 Y: 1 1 0 1 1 0 0 0 0 。
,所以dp表全都初始化为1 4、填表顺序 需要借助前面的状态,所以要从左往右 5、返回值 dp表中的最大值——>可以用ret去更新出最大值,也可以用*max_element(dp.begin(),dp.end len[i]——>len[i]=len[j]+1 count[i]=count[j](更新最大值并重新计数) 3、初始化 全都初始化为1 4、填表顺序 需要借助前面的状态,所以要从左往右,两个表一起填 5、 [i]: (1)长度为1——1 (2)长度大于1——p[j][1]>p[i][0] ——max(dp[i],dp[j]+1) 3、初始化 初始化为1 4、填表顺序 需要借助前面的状态,所以要从左往右 5、 for(int j=0;j<i;++j) if(pairs[j][1]<pairs[i][0]) dp[i]=max(dp[j]+1,dp[i]);//(1,5) (2,3)(4,10)(5,9) return dp[n-1];//最大值必然在最后面 } }; 五、最长定差子序列(经典) . - 力扣(LeetCode) 算法原理: 1、状态表示
缺点:对于复杂的时间序列,图像解释可能不明确;需要主观判断截尾和拖尾的位置。 缺点:对于复杂的时间序列,可能无法找到最佳模型。ACF & PACF 定阶使用自相关函数(ACF)和偏自相关函数(PACF)来确定AR和MA的阶数。 True, title='Partial Autocorrelation', zero=False, vlines_kwargs=None, ax=None)函数参数说明:x:要计算自相关或偏自相关的序列数据 示例代码:对于经典的时间序列数据,您可以使用其他专门的库来获取,例如 pandas-datareader、yfinance、Alpha Vantage 等。 假设我们有以下数据集:X = 1, 2, 3, 4, 5Y = 2, 4, 6, 8, 10我们可以考虑的模型阶数有1、2、3、4。对于每个阶数,我们拟合相应的线性回归模型,并计算AIC和BIC的值。
缺点:对于复杂的时间序列,图像解释可能不明确;需要主观判断截尾和拖尾的位置。 缺点:对于复杂的时间序列,可能无法找到最佳模型。 ACF & PACF 定阶 使用**自相关函数(ACF)和偏自相关函数(PACF)**来确定AR和MA的阶数。 示例代码: 对于经典的时间序列数据,您可以使用其他专门的库来获取,例如 pandas-datareader、yfinance、Alpha Vantage 等。 假设我们有以下数据集: X = [1, 2, 3, 4, 5] Y = [2, 4, 6, 8, 10] 我们可以考虑的模型阶数有1、2、3、4。 rss): bic = k * np.log(n) - 2 * np.log(rss) return bic # 生成示例数据 X = np.array([1, 2, 3, 4, 5]
调用函数时如果对实参使用一个星号*进行序列解包,那么这些解包后的实参将会被当做普通位置参数对待,并且会在关键参数和使用两个星号**进行序列解包的参数之前进行处理。 # 定义函数 >>> def demo(a, b, c): print(a, b, c) # 调用函数,序列解包 >>> demo(*(1, 2, 3)) 1 2 3 # 位置参数和序列解包同时使用 >>> demo(1, *(2, 3)) 1 2 3 >>> demo(1, *(2,), 3) 1 2 3 # 一个星号的序列解包相当于位置参数,优先处理,重复为a赋值,引发异常 >>> demo( ,尽管放在后面,但是仍会优先处理 >>> demo(c=1, *(2, 3)) 2 3 1 # 序列解包不能在关键参数解包之后,否则会引发异常 >>> demo(**{'a':1, 'b':2}, *( 3,)) SyntaxError: iterable argument unpacking follows keyword argument unpacking # 一个星号的序列解包相当于位置参数,优先处理
今天我们剖析的也是推荐领域的经典论文,叫做Wide & Deep Learning for Recommender Systems。 它的输入是一个用户信息以及用户浏览的上下文信息,返回的结果是一个排好序的序列。 正因为如此,对于推荐系统来说,也会面临一个和搜索排序系统一个类似的挑战——记忆性和泛化性的权衡。 ,Google Play是一个拥有超过10亿日活和100w App的移动App商店 推荐系统概述 这是一张经典的推荐系统的架构图: ? 这张图源于论文,从左到右分别展示了Wide模型,Wide & Deep模型以及Deep模型。从图上我们也看得出来所谓的Wide模型呢其实就是线性模型,Deep模型是深度神经网络模型。 因此paper当中选择了一种增量更新的模式,也就是说在模型更新的时候,会加载旧模型的参数,再使用最新的数据进行更新训练。在新模型更新上线之前,会先验证模型的效果,确认效果没有问题之后再进行更新。
最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路,比如说编辑距离 因为子序列类型的问题,穷举出所有可能的结果都不容易,而动态规划算法做的就是穷举 + 剪枝,它俩天生一对儿。所以可以说只要涉及子序列问题,十有八九都需要动态规划来解决,往这方面考虑就对了。 因为有一个字符串是空串,它们的最长公共子序列的长度显然应该是 0。 第三步,找状态转移方程。 这是动态规划最难的一步,不过好在这种字符串问题的套路都差不多,权且借这道题来聊聊处理这类问题的思路。 状态转移说简单些就是做选择,比如说这个问题,是求s1和s2的最长公共子序列,不妨称这个子序列为lcs。那么对于s1和s2中的每个字符,有什么选择?很简单,两种选择,要么在lcs中,要么不在。 ? 这个需要动点脑筋:如果某个字符应该在lcs中,那么这个字符肯定同时存在于s1和s2中,因为lcs是最长公共子序列嘛。
相对基于序列的推荐模型则是非序列化的推荐模型,如经典的矩阵分解模型和图模型,如图1。这两种模型主要考虑通过节点之间的邻接关系进行建模,时序通常是作为其中一个的隐式特征或者约束加入模型中来进行学习的。 如将图2中的序列展开后生成的模型输入为:[([e1], e2)),([e1, e2], e3),([e1,e2,e3], e4),([e1, e2, e3, e4], e5)],每个 tuple 的第一个元素是前 可以如图5,把这些特征通过 embedding 层之后进行聚合,拼接成一个长向量,然后输入到多层全连接网络。 图5 combine input embedding via concatenation 也可以每个特征在序列维度单独进行 embedding 和 pooling ( 各个特征的 pooling 方式可以不一样 论文[5]讲述了如何通过卷积神经网络对用户行为序列进行建模,其建模思想同论文[6]通过卷积神经网络对句子序列进行建模完成句子分类的工作,即 TextCNN。
使用vae推理;lstm 时间相关建模;external memory加强记忆;和神经图灵机 可微分计算机等进行比较。
简单的情感分类模型 示例 The dessert is excellent 首先在字典中找出句中所有单词,并使用 one-hot 向量 表示 ,乘以 词嵌入矩阵 E ,得到单词的 嵌入向量 e 如果在很大的语料库中训练 其中 softmax 分类器能够输出 5 个分类结果,从一星到五星。 而求和和平均的操作则避免模型考虑原有句子的长短。 基于 RNN 的情感分类模型 Completely lacking in good taste,good service, and good ambience(完全没有好的味道,好的服务,好的环境) 首先将每一个单词使用
性能对比 年份表 网络 提出的年份 意义 LeNet 1998 鼻祖 AlexNet 2012 兴盛 ZF-net 2013 GoogleNet 2014 VGG 2014 ResNet 201
一、为什么选择序列模型 序列模型可以用于很多领域,如语音识别,撰写文章等等。总之很多优点。。。 二、数学符号 为了后面方便说明,先将会用到的数学符号进行介绍。 2.前向传播 3.损失函数定义 要进行反向传播,必须得有损失函数嘛,所以我们将损失函数定义如下: 4.反向传播 计算出损失值后再通过梯度下降进行反向传播 5.整个流程图 五、不同类型的循环神经网络 本节主要介绍了其他更多类型的RNN结构,下图参考大数据文摘 六、语言模型和序列生成 1.什么是语言模型 凡事开头举个栗子,一切都好说: 假设一个语音识别系统听一句话得到了如下两种选择,作为正常人肯定会选择第二种 七、对新序列采样 下图给出了采样之后得到的效果: 左边是对训练得到新闻信息模型进行采样得到的内容; 右边是莎士比亚模型采样得到的内容。 像这样的例子如果想让我们的序列模型明白就需要借助不同的结构比如 - 双向递归神经网络(Bidirectional RNN)。该神经网络首先从正面理解一遍这句话,再从反方向理解一遍。