当前位置: 首页 > news >正文

【菜狗每日记录】深度轨迹聚类算法、GRU门控神经网络—20250909

 ① DTC深度轨迹聚类算法

A deep trajectory clustering method based on sequence- to- sequence autoencoder model论文原文名称《一种基于序列到序列自动编码器模型 的 深度轨迹聚类方法》

        “序列到序列”就是:输入一串序列,输出另一串序列。输入一段轨迹点数据,输出压缩后的轨迹特征。

        自动编码器是一种神经网络模型,用来把输入数据压缩成“隐藏特征”,再尽量还原出来。

  • “编码器”:把复杂的东西压缩、抽取出核心特征。

  • “解码器”:把这些特征重新还原成原来的样子。

  • 在这里,它的作用是学习轨迹的内在模式,把原始轨迹变成更简洁、可比较的表示。


解决的问题:当前轨迹聚类使用点匹配相似度度量,相似度精度较差,降低聚类质量。

        作者设计新的方法DTC,把轨迹数据变换到一个个小小的向量,更适合聚类的空间。

        “聚类中心”就是每一类的“代表轨迹”,就像把同类的轨迹找个“队长”来代表大家。

        作者的方法是 同时学这两个东西既学轨迹的表示方式,又学每一类的中心,而不是先做一个再做另一个。轨迹是有顺序和连续性的,所以分组的时候也考虑轨迹的起点和终点,让分出来的类别更连贯。

Ⅰ、自编码器网络预训练序列到序列来压缩+还原轨迹,学习轨迹的主要特征。轨迹—>初步向量表示

Ⅱ、把轨迹向量、聚类中心放在一个模型里面共同优化,让表示方式和分类效果互相促进。

Ⅲ、真实城市交通数据,利用学习的轨迹表示发现一些现实中的路线。


轨迹对象可以看作是一系列具有位置属性和时间戳的GPS记录

① 先翻译轨迹 → 向量。

一条轨迹是很多 GPS 点组成的,长短不一,形状不规则。DTC 把地图切成小格子(像把城市切成很多方块),每条轨迹就变成“经过了哪些格子”的序列。

把研究区域划成等大小的空间网格,每个格子视为一个离散 token(词表里的一个词)。落在同一格的点都用同一个 token 表示。例如示意里把区域切成 9 格:词表 V={g1…g9};轨迹 t1= {g1,g2,g3},t2= {g4,g7,g8,g9}。

用一个“翻译机”(Seq2Seq自编码器)把这些序列翻译成一段固定长度的数字向量(比如256维)。

预训练(Seq2Seq Autoencoder)
  • 编码器(Encoder:将轨迹token序列映射到固定长度向量 v。采用GRU单元(3层,每层256维)。顺序读入 token 序列 x=(x1,…,xT′),得到隐藏状态 ht′,最终把序列压成一个固定维度向量 v(通常取最后一个隐藏态)。这一步就是“把整条轨迹压缩成摘要”。

  • 解码器Decoder:根据向量v重构原始轨迹序列。用v作为条件,逐步预测重构序列 y=(y1,…,yT),即学习条件分布 P(y∣x)。

  • 目标函数:最小化原轨迹分布与重构轨迹分布之间的KL散度,结合空间邻近约束(只计算目标点附近K个格子,降低计算量)。以真格子为中心、相近格子也给权重空间邻近分布 Prt,和解码器输出的分布 Pyt做 KL 散度。训练后得到初步的轨迹低维表示

② 让向量更适合聚类

现在拿到每条轨迹的向量,重复跑kmeans,随机初始化,最优的结果的中心作为后续联合优化的初始化。

单纯翻译成向量还不够,DTC会一边学“怎么重建原轨迹”,一边学“向量要能分成几堆”。像把学生按性格分组:既要让每个人能描述自己,还要能自然分到某个小圈子。

聚类

开始时用 K-means 给个初始分组。然后系统一边调整“轨迹向量”,一边移动“聚类中心”,最后同时收敛。


② GRU门控循环网络(李沐)

目的:关注序列的时候,不是每个观察值都是同等重要。控制网络要关注哪一部分。

想要只记住相关的观察需要:

        1、能关注的机制(更新门)

        2、能遗忘的机制(重置门)

多了几个学习的权重:

        两个全连接层学习重置和更新门的相关信息,之后sigmoid。

再加上一个候选隐藏状态H:

        👇这个公式,假设不看Rt,Ht就是RNN的隐藏状态公式,即当前信息+上一层信息。

        而点⚪:“按照元素相乘”,驾驶里面的元素靠近0,Rt和Ht-1按照元素相乘就会变得像是0。假设Rt全是1,那么全部信息都用来学习,这一个“()”就是看一个东西过来,确定哪些东西输送到我们的网络。

隐藏状态

        Zt如果=1,那么Ht=Ht-1,相当于忽略了新来的一个信息。如果Zt=0,不拿过去的状态,就看现在的一个状态。

        R_t 和 Z_t 都是根据过去的状态 H_{t-1} 和当前输入 X_t 计算得到的 【0,1】 之间的量。 R_t 首先与 H_{t-1} 进行元素积,由于 R_t 内部都是 【0,1】 的变量,因此是对过去的状态 H_{t-1} 进行一次选择,R_t 在某个位置的值越趋近于0,则表示这个位置的过去信息越倾向于被丢弃,反之保留。  随后与 X_t 一起构成候选隐藏变量 \tilde{H}_t。同样由于 R_t 的值在 【0,1】 中,它只会削弱过去的状态,而不会增强,因此被称为遗忘门(或重置门,重置过去的状态)。

       Z_t 被称为更新门,因为它控制了隐藏状态的更新。假如Z_t全为1,则 H_t 将完全保留上一个时间的状态 H_{t-1};反之,则全盘采用当前时刻的候选隐藏变量{H}_t。 或许各位会有疑问,感觉 R_t 已经对过去有所选择,为何还要加上 Z_t 多此一举。个人认为,Z_t 实际上是对当前进行选择,根据老师的例子,如果一个序列中已经有很多的“猫”,那么再输入猫,实际上对于网络的正收益不大,可以抛弃,而 R_t 只能选择过去,不能抛弃当前,而 Z_t 可以。   

        总而言之,GRU通过两个门控网络,根据过去状态和当前输入,一方面对过去状态进行选择,一方面对当前状态也进行选择。

         学习的权重=RNN两倍。

        要更新新的隐藏状态,需要使用过去多少的信息。

        要更新新的隐藏状态,需要当前Zt多少相关信息。

        目的:判断是否要关注Xt,要关注多少。

——小狗照亮每一天

2025.9.9


文章转载自:

http://249gj1m3.xLmpj.cn
http://8L7s5F4O.xLmpj.cn
http://4y5UWSg2.xLmpj.cn
http://6EdAL6yi.xLmpj.cn
http://zGSAZYXd.xLmpj.cn
http://NqMhfOGP.xLmpj.cn
http://9tPwFERe.xLmpj.cn
http://NvNnspmb.xLmpj.cn
http://ScrtrOnY.xLmpj.cn
http://nCQQi0op.xLmpj.cn
http://fIN8ddtP.xLmpj.cn
http://qEYUR7Uv.xLmpj.cn
http://CJ8Zkpyz.xLmpj.cn
http://vNDVwkQN.xLmpj.cn
http://c8AS9b51.xLmpj.cn
http://pABHWgCK.xLmpj.cn
http://4dYlFN24.xLmpj.cn
http://57Peysv5.xLmpj.cn
http://ODIg9C2c.xLmpj.cn
http://maaAOpZM.xLmpj.cn
http://F0kckBR2.xLmpj.cn
http://KkLTI2Hj.xLmpj.cn
http://62RdmL3l.xLmpj.cn
http://26Fh11LM.xLmpj.cn
http://cSumHIG8.xLmpj.cn
http://PgoahwMF.xLmpj.cn
http://Ce9A7ELu.xLmpj.cn
http://v3YpGF4p.xLmpj.cn
http://KwicrP8K.xLmpj.cn
http://xr0d0tR6.xLmpj.cn
http://www.dtcms.com/a/375278.html

相关文章:

  • OpenCV 实战:多角度模板匹配实现图像目标精准定位
  • C#/.NET/.NET Core技术前沿周刊 | 第 53 期(2025年9.1-9.7)
  • 基于Java+Vue开发的家政服务系统源码适配H5小程序APP
  • 使用Flask实现接口回调地址
  • Java线程中的sleep、wait和block:区别与联系详解
  • 生信软件管理, 容器-Singularity学习笔记
  • go webrtc - 2 webrtc重要概念
  • 智能驱动,全程可控——D-QS工程造价数字化平台核心功能深度解析
  • [硬件电路-170]:50Hz工频干扰:本质、产生机制与影响
  • tab切换动画,背景图向内收缩效果,主图片缓慢展开效果(含自适应)
  • 【内存管理】设置内存页表项 set_pte_at
  • Python中内置装饰器
  • 鸿蒙NEXT UI高性能开发实战:从原理到优化
  • 影视APP源码 SK影视 安卓+苹果双端APP 反编译详细视频教程+源码
  • Anthropic 支持加州 AI 安全法案
  • 【杂类】应对 MySQL 处理短时间高并发的请求:缓存预热
  • ubuntu 20.04 安装spark
  • 【企业微信】接口报错:javax.net.ssl.SSLHandshakeException
  • uniapp原生插件 TCP Socket 使用文档
  • 京东云-数据盘挂载
  • 【华为OD】Linux发行版的数量
  • 缓冲区漏洞详解
  • 位图转矢量图的实现方法与常用工具解析
  • 设计模式-简单工厂策略装饰器代理
  • 家庭劳务机器人发展阶段与时间预测
  • .NET 单文件程序详解:从原理到实践
  • 新能源汽车充电设备装调与检修仿真教学软件:理虚实融合实训方案
  • 小鹏汽车 vla 算法最新进展
  • C++ 20 视图view笔记
  • HTML 网页静态托管 API 接口文档(可集成到智能体Agent)