IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 对话诊断(X)2022IJCAI-My nose is running.Are you also coughing?:Building a Medical Diagnosis Agent with -> 正文阅读

[人工智能]对话诊断(X)2022IJCAI-My nose is running.Are you also coughing?:Building a Medical Diagnosis Agent with

2022IJCAI“My nose is running.” “Are you also coughing?”:Building a Medical Diagnosis Agent with Interpretable Inquiry Logics

在这里插入图片描述

Abstract:

随着远程医疗的兴起,发展医疗诊断对话系统(DSMD)的任务近年来受到了广泛的关注。与早期需要依赖额外的人力资源和专业知识来帮助构建系统的研究不同,最近的研究集中在如何以纯数据驱动的方式构建DSMD。然而,以往数据驱动的DSMD方法存在两个问题:

  • 忽略了系统的可解释性,对话诊断的可解释性对于医疗应用至关重要,

  • 存在数据稀疏性的问题,可用的训练数据少

本文探讨了如何向数据驱动的DSMD引入可解释性。提出了一个可解释的决策过程,通过合理地模拟真实医生的查询逻辑实现了DSMD的对话管理模块,并设计了一个具有高度透明组件的模型来进行推理。此外,还收集了一个新的DSMD数据集,它比现有的数据集具有更大的规模,更多样化的模式,质量也更高。实验结果表明,该方法在三个数据集上的诊断准确率分别得到了7.7%、10.0%和3.0%的绝对提高,证明了其合理决策过程和模型设计的有效性。

代码链接:https://github.com/lwgkzl/BR-Agent

论文链接:https://arxiv.org/pdf/2204.13953.pdf

Introduction:

由于医疗资源的普遍短缺,世界各地的数百万患者正面临着疾病诊断和治疗的延误。为了使医疗咨询的过程自动化并缓解治疗压力,关于如何开发医疗诊断对话系统已经研究了几十年。通常,DSMD需要多次询问患者的症状,直到做出初步诊断。在这一研究领域中,早期的工作需要依靠额外的人力资源和专业知识来帮助构建系统,如特征工程和规则设计[Shortliffe, 1974; Pople et al., 1975;Milward and Beveridge, 2003]。直到2018年,[Wei et al. 2018]公开了从在线医疗社区收集的第一个DSMD数据集,以纯数据驱动的方式开发DSMD成为了新的研究趋势[Xu et al.,2019; Xia et al., 2020; Liao et al., 2020; He et al., 2020;Zhao et al., 2020; Liu et al., 2021; Liu et al., 2020;Lin et al., 2021]。在此之前,对话诊断模型的研究需要模拟患者的情况以测试系统性能,而不是使用直接从真实患者的病例中收集的数据。

在这里插入图片描述

然而,虽然避免了依赖额外的人力资源来构建系统,但数据驱动的方法在很大程度上忽略了系统的可解释性,之前很多基于数据驱动的对话诊断研究都使用黑盒神经网络实现对话管理,并直接生成所有可能行为的概率分布,即同时进行疾病推断和症状选择。这种决策过程的可解释性非常弱,它们的模型组件也缺乏足够的透明度。为此,本文提出了一个更可解释的两阶段决策过程,通过合理地模拟真实的医生的咨询逻辑,来实现对话管理。本文认为分别构建疾病推理及症状选择模块要比将两者放在一个模块效果更好(深以为然

具体来说,在每个对话回合中,系统应该首先根据当前的症状信息推断患者可能患的疾病。如果最可疑的疾病达到一个置信阈值,则会给出诊断结果;否则,它将根据疾病估计进一步查询症状。这就像在真正的会诊场景中一样,医生只因为怀疑有特定疾病而询问症状,而不是直接基于已知的症状。此外,对于症状的选择,本文总结了有两种选择逻辑:查询一种症状,一是确保对一种疾病的怀疑,二是区分相似的疾病

本文提出了一个具有高度透明组件的模型来进行上述决策过程,名为贝叶斯增强代理(BR-Agent)。它包括一个用于疾病推断的贝叶斯网络和两个矩阵,分别模拟两种症状选择逻辑,并由一个逻辑切换器控制。它们的参数都是有实际意义的。例如,BayesNet中的参数要么是疾病的先验概率,要么是特定疾病-症状的条件概率。

由于缺乏回合级监督标签,BR-Agent通过考虑症状召回和诊断准确性的长期强化奖励进行优化。BRAgent中的BayesNet也通过RL的梯度与其他组件端到端进行训练,这与医学领域其他BayesNet应用的学习范式不同。在以往的研究中,BayesNet的参数通常是借助专家知识或使用统计估计方法来确定的。即使当以深度学习的方式将贝叶网与其他神经网络相结合时,贝叶网的参数也可以使用更传统的方法单独学习,而不是像本文提到的从末端训练其他组件。

Perliminaries:

对话诊断系统一般由NLU、DM、NLG几部分组成。在每个交互步,NLU从对话中提取目前已知的症状,DM要么选择一种疾病作为诊断结果并完成对话,要么选择另一个症状进行查询,DM的输出通过NLG变为更合理的自然语言。在本文中,同之前的对话诊断模型一样,只关注DM部分。由于患者对症状的叙述方式相对固定,因此NLU可以使用基于规则的方法;且对话诊断系统不怎么关注回复的多样性和生动,所以NLG可以使用基于模板的方式。

对于DM,其输入为从对话上下文中得到的症状的表示,输出为要查询的症状或诊断的疾病。若对话诊断系统考虑 N N N个症状、 M M M种疾病,则每轮对话第 t t t步DM的输入为 s t ∈ R N s_t∈R^N st?RN,表示当前获得的患者症状知识。其中 s t s_t st?的每一维表示一个症状,且从 { 1 , ? 1 , 0 } \{1,-1,0\} {1,?1,0}中取值(1表示患者有这个症状,-1表示患者没有这个症状,0表示患者不确定)。DM输出的动作空间大小为 M + N M+N M+N

Methodology:

在这里插入图片描述

DM部分(BR-Agent)由贝叶斯网络构成的疾病推理和使用一个神经逻辑转换器、两个模拟不同问询逻辑的逻辑矩阵症状查询两部分组成,并基于强化学习对两部分进行训练。

在每轮对话第 t t t时间步,给定患者症状信息 s t s_t st?,BR-Agent中的贝叶斯网络首先会推断患者的患病概率 P D P_D PD?。如果最可能的疾病概率( P D P_D PD?中的最大值)超过了阈值 ε d \varepsilon_d εd?或者 t t t到达了最大回合步数 T m a x T_{max} Tmax?之前的模型到达最大回合步时若输出动作仍是症状,也不会直接诊断疾病并结束),DM返回诊断结果。否则模型将会使用一个神经逻辑转换器和两个模拟不同问询逻辑的逻辑矩阵预测在下一次响应 P S P_S PS?中最需要查询的症状(概率高的疾病对应的症状被查询的概率也应该大(不一定),是有相关性在的,如何正确建模这种相关性呢?——文中使用条件概率矩阵)。

Disease Inference

BR-Agent通过贝叶斯网络进行疾病推理,其由一个双向二部图 G = ( V , ζ ) G=(V,\zeta) G=(V,ζ)构成,节点集合 V V V由疾病节点 D = { D i ∣ i = 1 , 2 , . . . , M } D=\{D_i|i=1,2,...,M\} D={Di?i=1,2,...,M}和症状节点 S = { S j ∣ j = 1 , 2 , . . . , N } S=\{S_j|j=1,2,...,N\} S={Sj?j=1,2,...,N}构成,边集合 ζ \zeta ζ由疾病-症状对在语料库(什么语料库?电子病历?对话数据)中出现的共现频次计算得到。具体的,当疾病节点 D i D_i Di?与症状节点 S j S_j Sj?的共现频次大于给定阈值 ? e \epsilon_e ?e?时,图中有一条边由 D i D_i Di?指向 S j S_j Sj?。症状节点 S j S_j Sj?的父集合由所有指向该节点的疾病节点组成,表示所有可能引起该症状的疾病集合,由 P a r e n t s ( S j ) Parents(S_j) Parents(Sj?)构成。

对于贝叶斯网络的参数学习(贝叶斯网络参数学习我没了解过,实在不懂,先复述文中的话,以后明白了再加自己的理解),本文借鉴[Chen et al., 2020]提到的方法进行初始化,而后在端到端RL训练中使用其他组件对它们进行微调。在贝叶斯网络 θ B N \theta_{BN} θBN?中有两种参数,一个是疾病 D i ( i = 1 , 2 , . . . , M ) D_i(i=1,2,...,M) Di?(i=1,2,...,M)的先验概率 P ( D i ) P(D_i) P(Di?),通过数据集中疾病发生的次数进行初始化。另一种是在相关疾病发生情况下产生某种症状的条件概率 P ( S i ∣ D i + , D i ? ) P(S_i|D_i^+,D_i^-) P(Si?Di+?,Di??),其中 D i + D_i^+ Di+?为患者有的疾病集合, D i ? D_i^- Di??为患者没有的疾病集合,且 P a r e n t s ( S i ) = D i + ∪ D i ? Parents(S_i)=D_i^+∪D_i^- Parents(Si?)=Di+?Di??。在本文使用的数据集中,对一个患者的诊断只包括一种疾病,并且假设该患者没有任何其他未提及的疾病。因此,如果 ∣ D i + ∣ = 1 |D_i^+|=1 Di+?=1只有一个元素,我们就可以根据症状和疾病的共现关系计算上述概率。对于其他情况,使用随即猜测0.5进行初始化。参数 P ( S i ∣ D i + , D i ? ) P(S_i|D_i^+,D_i^-) P(Si?Di+?,Di??)的初始值计算如下:
P ( S i ∣ D i + , D i ? ) = { n ( S i , D i + ) / n ( D i + ) i f ∣ D i + ∣ = 1 0.5 e l s e . P(S_i|D_i^+,D_i^-)=\begin{cases}n(S_i,D_i^+)/n(D_i^+) \qquad if |D_i^+|=1 \\ \\ 0.5 \qquad\qquad\qquad\qquad else. \end{cases} P(Si?Di+?,Di??)=? ? ??n(Si?,Di+?)/n(Di+?)ifDi+?=10.5else.?
其中 n ( D i + ) n(D_i^+) n(Di+?)是数据集中存在疾病 D i + D_i^+ Di+?的患者数量, n ( S i , D i + ) / n ( D i + ) n(S_i,D_i^+)/n(D_i^+) n(Si?,Di+?)/n(Di+?)为患者存在症状 S i S_i Si?、疾病 D i + D_i^+ Di+?,不存在疾病 D i ? D_i^- Di??的数量。

在初始化后,贝叶斯网络所有的参数 θ B N \theta_{BN} θBN?会在对话管理组件端到端训练时进行微调。给定贝叶斯网络以及状态 s t s_t st?中观测到的积极症状 S + S^+ S+及消极症状 S ? S^- S?的集合,就可以通过变量消除算法(Variable Elimination, VE)计算疾病的分布 P D = P ( D ∣ S + , S ? ) = V E ( S + , S ? ; θ B N ) P_D=P(D|S^+,S^-)=VE(S^+,S^-;\theta_BN) PD?=P(DS+,S?)=VE(S+,S?;θB?N)。本质上,给定观测到的症状,VE可以将未观测到的症状 S u = S / ( S + ∪ S ? ) S^u=S/(S^+∪S^-) Su=S/(S+S?)边缘化,并求得观测症状条件下的疾病的概率分布。由于VE的计算过程是可微的,因此在对话管理中其他模型组件进行端到端训练中,可以使用 P D P_D PD?上的梯度来更新贝叶斯网络参数 θ B N \theta_{BN} θBN?

Symptom Selection

为进行症状选择,本文使用两个向量来模拟现实医生的两种问询逻辑:一个条件概率向量 M c ∈ R M × N M_c∈R^{M×N} Mc?RM×N(确保对一种特定疾病的怀疑),一个用来区分两个相似疾病的互信息向量 M m ∈ R M × N M_m∈R^{M×N} Mm?RM×N。(最近读到的论文很多提到互信息,有机会写一篇相关介绍)条件概率向量中的元素 M c ( i , j ) M_c(i,j) Mc?(i,j)表示给定疾病 D i D_i Di?条件下症状 S j S_j Sj?的概率:
M c ( i , j ) = P ( S j ∣ D i ) = n ( D i , S j ) / ∑ k = 1 N n ( D i , S k ) M_c(i,j)=P(S_j|D_i)=n(D_i,S_j)/\sum_{k=1}^N n(D_i,S_k) Mc?(i,j)=P(Sj?Di?)=n(Di?,Sj?)/k=1N?n(Di?,Sk?)
其中 n ( D i , S j ) n(D_i,S_j) n(Di?,Sj?)为患者同时存在疾病 D i D_i Di?和症状 S j S_j Sj?的对话数量。

互信息向量中的元素 M m ( i , j ) M_m(i,j) Mm?(i,j)表示疾病 D i D_i Di?华人症状 S j S_j Sj?之间的交互信息:
M m ( i , j ) = I ( D i ; S j ) = ∑ k 1 ∑ k 2 P ( D i = k 1 , S j = k 2 ) ? l o g ( P ( D i = k 1 , S j = k 2 ) P ( D i = k 1 ) P ( S j = k 2 ) ) M_m(i,j)=I(D_i;S_j)=\sum_{k_1}\sum_{k_2}P(D_i=k_1,S_j=k_2)\cdot log(\frac{P(D_i=k_1,S_j=k_2)}{P(D_i=k_1)P(S_j=k_2)}) Mm?(i,j)=I(Di?;Sj?)=k1??k2??P(Di?=k1?,Sj?=k2?)?log(P(Di?=k1?)P(Sj?=k2?)P(Di?=k1?,Sj?=k2?)?)
其中 k 1 k_1 k1? k 2 k_2 k2?分别为疾病 D i D_i Di?和症状 S j S_j Sj?的可能值集。 k 1 , k 2 ∈ { 0 , 1 } k1,k2∈\{0,1\} k1,k2{0,1},其中0代表不存在,1代表存在。

条件概率矩阵倾向于查询与疑似疾病同时出现的频繁症状。然而,一些症状在许多疾病中可能是常见的,如症状“发烧”,因此不能用来区分它们。另一方面,互信息度量疾病 D i D_i Di?和症状 S j S_j Sj?之间的联系,表明症状 S j S_j Sj?是否可以用来区分 D i D_i Di?和其他疾病,即便症状 S j S_j Sj?是一个低频的症状,只要其与疑似疾病的联系较强,就可以进行询问。这两个矩阵都沿着行轴进行了归一化处理。

为了确定哪种症状查询逻辑更适合当前的回合,采用多层感知器(MLP)计算权重因子 μ ∈ [ 0 , 1 ] μ∈[0,1] μ[0,1]以融合两个矩阵的预测结果,得到最终结果 P S P_S PS?
μ = S i g m o i d ( M L P ( s t ; P D ) ) , \mu=Sigmoid(MLP(s_t;P_D)), μ=Sigmoid(MLP(st?;PD?)),
P s = μ P D ? M c + ( 1 ? μ ) P D ? M m P_s=\mu P_D\cdot M_c+(1-\mu)P_D\cdot M_m Ps?=μPD??Mc?+(1?μ)PD??Mm?

RL Training Framework

模型使用强化学习算法Advantage Actor Critic(A2C)算法进行训练。A2C算法包括一个生成动作的actor,一个基于动作更新当前状态并生成奖励的enviroment,以及一个评估当前状态的价值的critic。价值函数通过估计“优势”(估计的奖励和行动后获得的实际奖励之间的差异)来训练actor。在本文,状态为 s t s_t st?,即当前已知的症状信息;actor为对话管理模块;交互的环境为用户模拟器;通过MLP构建critic的值函数 v ( s t ; θ v ) v(s_t;\theta_v) v(st?;θv?),并通过时序差分度量“优势”: δ t = r t + γ v ( s t + 1 ; θ v ) ? v ( s t ; θ v ) \delta_t=r_t+\gamma v(s_{t+1};\theta_v)-v(s_t;\theta_v) δt?=rt?+γv(st+1?;θv?)?v(st?;θv?)

策略决策及值评估部分的参数 θ π \theta_\pi θπ? θ v \theta_v θv?分别通过以下公式进行更新:
θ π ← θ π + β 1 ? δ t ? ? θ π l n π ( a t ∣ s t ; θ π ) + β 2 ? H ( π ( a t ∣ s t ; θ π ) θ_π ← θ_π + β_1 · δ_t · ?_{θ_π}ln π(a_t|s_t; θ_π) + β_2 · H(π(a_t|s_t; θ_π) θπ?θπ?+β1??δt???θπ??l(at?st?;θπ?)+β2??H(π(at?st?;θπ?)
θ v ← θ v + α ? δ t ? ? θ v v ( s t ; θ v ) θ_v ← θ_v + α · δ_t · ?_{θ_v} v(s_t; θ_v) θv?θv?+α?δt???θv??v(st?;θv?)
其中 β 1 β_1 β1? β 2 β_2 β2? α α α是超参数, H ( ? ) H(·) H(?)是鼓励政策探索的熵正则化项。通过这种方式,策略决策中的贝叶斯网络参数也会与其他组件一起进行微调。

Dataset Construction

本文除使用已公开标注数据集Muzhi [Wei et al., 2018]和Dxy[Xu et al., 2019]外还构建了自己的数据集GMD-12,该数据集从17000份电子病历中获得,包括12种疾病及118个症状。为评估三个数据集的数据质量,聘请3名有两年以上咨询经验的医生对每个数据集200个样本的合理性评分。合理性评分为0-2分(最佳评分为2分),GMD-12的理性得分最高,即从专业的角度来看,它的质量较好。

在这里插入图片描述

Experiments

实验结果评估:诊断的准确性和对症状的召回率。症状召回率是由对话代理成功查询患者症状的平均比例,衡量了药剂收集患者信息的效率。

对比实验:考虑的baseline有Basic DQN [Wei et al., 2018] A2C-GCN [Kipf and Welling,2017]Sequicity [Lei et al., 2018] KR-DS [Xu et al., 2019]GAMP [Xia et al., 2020]

消融实验:考虑疾病推理的贝叶斯网络,症状检查的条件概率向量和互信息向量,在消融实验过程中使用MLP代替。

在这里插入图片描述

Analysis of Interpretability

在应用过程中,人们可以很容易地分析BR-Agent如何得出每个回合的决策。例如,可以通过调查贝叶斯网络中的疾病评估及逻辑转换器的查询逻辑解释为什么询问特定的症状。同时,贝叶斯网络的参数和两个过渡矩阵都是有意义的,从其中可以推断出某个疾病的先验概率或者给出特定疾病后症状的条件概率。

Case Study of the Decision Process.

在这里插入图片描述

图4展示了两个对话步中BR-Agent策略决策的学习案例。在症状查询过程中,逻辑切换器产生的权重 μ μ μ等于0.7,说明条件概率矩阵主导了当前的查询逻辑。为了确定怀疑的疾病(肺炎),BR-Agent检查其典型症状的肺鼻音。经过询问,肺炎概率的估计从0.49增加到0.97,大于设定的阈值,因而做出最终的诊断。

图中数据如何计算得出还没算出来

Human Evaluation of the Decision Process.

在这里插入图片描述

本文从专业角度对所提模型的合理性进行了评分。具体了,找了两名临床专业对症状查询及疾病诊断过程进行了评估。

Analysis of the Neural Logic Switcher and Two Matrices.

在这里插入图片描述

为了更清楚地说明BR-Agent中两个矩阵的不同症状查询逻辑,在图3中给出了一个案例研究。在进行症状调查之前,该系统高度怀疑自己患有手足口病(HFMD)和上呼吸道感染(URI)。从两个矩阵数值中可以看出,条件概率矩阵倾向于询问高度频繁的症状“发热”。然而,“发烧”是HFMD和URI的常见症状,所以查询“发烧”不能排除/确认其中的任何一种疾病而互信息能够考虑相对较低频率的症状“疱疹”,因为它是HFMD的典型症状,该症状可以用来有效区分这两种疾病。在本例中,神经逻辑转换器生成 μ = 0.3 μ= 0.3 μ=0.3,互信息矩阵占主导地位。所以,系统会询问“疱疹”这一症状。且确认该症状后,系统对HFMD诊断结果的置信度达到了96%。

Conclusion

本文中可解释的数据驱动的对话诊断模型进行了初步尝试。提出了一种具有可解释决策过程和透明组件的新框架,**该框架由一个用于疾病推断的贝叶斯网和两个用于模拟人类医生的症状查询逻辑的矩阵组成,并由一个神经逻辑转换器控制。**本文还构建了一个大型的对话诊断数据集来缓解数据的稀疏性问题。

这篇文章确实不错,所提出的方法可解释性很强,计算方法也比较容易理解。很值得一看。

参考文献:

[Shortliffe, 1974] Edward H. Shortliffe. MYCIN: A rule based computer program for advising physicians regarding antimicrobial therapy selection. In Roger C. Brown and Donald E. Glaze, editors, Proc. of the ACM Annual Confer ence, page 739. ACM, 1974.

[Pople et al., 1975] Harry E. Pople, Jack D. Myers, and Randolph A. Miller. DIALOG: A model of diagnostic logic for internal medicine. In Proc. of IJCAI, pages 848–855, 1975.

[Milward and Beveridge, 2003] David Milward and Martin Beveridge. Ontology-based dialogue systems. In Proc. of IJCAI, pages 9–18. Citeseer, 2003.

[Chen et al., 2020] Jun Chen, Xiaoya Dai, Quan Yuan, Chao Lu, and Haifeng Huang. Towards interpretable clinical diagnosis with bayesian network ensembles stacked on entity-aware cnns. In Proc. of ACL, pages 3143–3153, 2020.

[Wei et al., 2018] Zhongyu Wei, Qianlong Liu, Baolin Peng, Huaixiao Tou, Ting Chen, Xuanjing Huang, Kamfai Wong, and Xiangying Dai. Task-oriented dialogue system for automatic diagnosis. In Proc. of ACL, pages 201–207, July 2018.

[Xu et al., 2019] Lin Xu, Qixian Zhou, Ke Gong, Xiao dan Liang, Jianheng Tang, and Liang Lin. End-to-end knowledge-routed relational dialogue system for automatic diagnosis. In Proc. of AAAI, volume 33, pages 7346–7353, 2019.

[Lei et al., 2018] Wenqiang Lei, Xisen Jin, Min-Yen Kan, Zhaochun Ren, Xiangnan He, and Dawei Yin. Sequicity: Simplifying task-oriented dialogue systems with single sequence-to-sequence architectures. In Proc. of ACL, pages 1437–1447, July 2018.

[Xia et al., 2020] Yuan Xia, Jingbo Zhou, Zhenhui Shi, Chao Lu, and Haifeng Huang. Generative adversarial regularized mutual information policy gradient framework for automatic diagnosis. In Proc. of AAAI, volume 34, pages 1062–1069, 2020.

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:57:15  更:2022-09-24 21:00:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:33:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码