关于AI记忆系统的研究

当判断两个句子是否相关时,我第一反应想到的是两句是否包含相同的关键字词,于是可以得到:当两个句子相同的字词越多时,这两句就越相关。

然而,一句句子中,常见的虚词、代词所占的比重可能会比关键词所占的比重大很多,而且这类常见字词可能在几乎所有句子里都有出现,所以在定义R值时,需要将这些字词的比重降低。

同时,我们不知道关键字词有多少字,但先不妨假设这个关键字词只有一个字,那么我们可以先得出一个简单的公式:
B 句对于 A 句的相关性 R = ∑ 对 A 句的每个字 f ( B 句是否有这个字 ) g ( 该字在所有句子中的出现率 ) B句对于A句的相关性R=\sum_{对A句的每个字}{f(B句是否有这个字)\over g(该字在所有句子中的出现率)}B 句对于A 句的相关性R =对A 句的每个字∑​g (该字在所有句子中的出现率)f (B 句是否有这个字)​
可以看到,当A中的某个字在所有句子中的出现率过大时,这个字对两句相关性的影响力将会减弱。

接着,利用上述公式计算某记忆与当前对话的相关值,并将值映射到( 0 , 1 ) (0, 1)(0 ,1 )区间。记:某记忆M x = { c 1 , c 2 , . . . , c m } M_x=\lbrace c_1, c_2, …, c_m\rbrace M x ​={c 1 ​,c 2 ​,…,c m ​},当前对话P = { p 1 , p 2 , . . . , p n } P=\lbrace p_1, p_2, …, p_n\rbrace P ={p 1 ​,p 2 ​,…,p n ​},所有记忆S = { M 1 , M 2 , . . . , M s } S=\lbrace M_1, M_2, …, M_s\rbrace S ={M 1 ​,M 2 ​,…,M s ​},且M x ∈ S M_x\in S M x ​∈S。于是可得:
R ( P , M x , S ) = s i g m o i d [ r ( P , M x , S ) ] R(P, M_x, S) = sigmoid[r(P, M_x, S)]R (P ,M x ​,S )=s i g m o i d [r (P ,M x ​,S )]
其中:
r ( P , M x , S ) = ∑ i = 1 n s i g n ( p i , M x ) × ( m ∑ j = 1 s s i g n ( p i , M j ) − 1 ) s i g n ( p i , M x ) = { 1 , i f p i i n M x 0 , i f p i n o t i n M x s i g m o i d ( x ) = 1 1 + e − x r(P, M_x, S) = \sum_{i=1}^n{sign(p_i, M_x)\times({m\over{\sum_{j=1}^s{sign(p_i, M_j)}}}-1)} \\ sign(p_i, M_x) = \begin{cases} 1,\,if\,\,p_i\,\,in\,\,M_x\ 0,\,if\,\,p_i\,\,not\,\,in\,\,M_x\ \end{cases} \\ sigmoid(x) = {1\over1+e^{-x}}r (P ,M x ​,S )=i =1 ∑n ​s i g n (p i ​,M x ​)×(∑j =1 s ​s i g n (p i ​,M j ​)m ​−1 )s i g n (p i ​,M x ​)={1 ,i f p i ​in M x ​0 ,i f p i ​n o t in M x ​​s i g m o i d (x )=1 +e −x 1 ​
然而,普遍情况下关键字词一般都由2、3个字组成,且通常来看,如果A句和B句拥有相同的多字词语,而A句和C句仅仅拥有相同的单字,那么显然B句相比于C句,与A句的相关性更大。因此,需要对上面的公式进行稍微的修改,降低拥有相同单字时的比重,同时加大拥有相同多字时的比重,且字数越多,比重越大。

记:最大关键词字数为A A A,当前对话P = { p 1 , p 2 , . . . , p n } = p 1 p n ^ P=\lbrace p_1, p_2, …, p_n\rbrace=\widehat{p_1p_n}P ={p 1 ​,p 2 ​,…,p n ​}=p 1 ​p n ​​,例如:”你吃了吗”中,p 2 p 3 ^ = \widehat{p_2p_3}=p 2 ​p 3 ​​=”吃了”。可得:
R ( P , M x , S , A ) = s i g m o i d [ r ( P , M x , S , A ) ] r ( P , M x , S , A ) = ∑ a = 1 A − 1 [ ∑ i = a n s i g n ( p i − a p i ^ , M x ) × ( m [ ∑ j = 1 s s i g n ( p i − a p i ^ , M j ) ] A − a − 1 ) ] R(P, M_x, S, A) = sigmoid[r(P, M_x, S, A)] \\ r(P, M_x, S, A) = \sum_{a=1}^{A-1}[{\sum_{i=a}^n{sign(\widehat{p_{i-a}p_i}, M_x)\times({m\over{[\sum_{j=1}^s{sign(\widehat{p_{i-a}p_i}, M_j)}}]^{A-a}}-1)}}]R (P ,M x ​,S ,A )=s i g m o i d [r (P ,M x ​,S ,A )]r (P ,M x ​,S ,A )=a =1 ∑A −1 ​[i =a ∑n ​s i g n (p i −a ​p i ​​,M x ​)×([∑j =1 s ​s i g n (p i −a ​p i ​​,M j ​)]A −a m ​−1 )]

在短期记忆容器中,每条记忆都会有一个遗忘值,并且在每一轮对话结束时更新。当遗忘值超过临界时,记忆将会被转移到长期记忆中。

遗忘值的更新基于该记忆与当前对话的相关值,若相关值大于某一标准,则遗忘值将减小,反之则增大。

记R R R为当前记忆与当前对话的相关值,R ^ \widehat R R为标准,则第n次对话时,当前记忆的遗忘值为:
F n ( R ) = ∑ i = 1 n Δ F i ( R ) F_n(R)=\sum_{i=1}^n\Delta F_i(R)F n ​(R )=i =1 ∑n ​ΔF i ​(R )
其中:
Δ F n ( R ) = t a n h ( R ^ − R ) t a n h ( x ) = e x − e − x e x + e − x \Delta F_n(R)=tanh(\widehat R-R) \\ tanh(x)={e^x-e^{-x}\over e^x+e^{-x}}ΔF n ​(R )=t anh (R −R )t anh (x )=e x +e −x e x −e −x ​

Original: https://blog.csdn.net/m0_60833277/article/details/128731738
Author: Penrose0v0
Title: 关于AI记忆系统的研究

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/811618/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球