一个样本一般会被看成是一个向量. 然后将样本标签丢给 机器去学习模型.
通常也有样本, 不是向量. 例如 图, 点云(矩阵), 持续图(2维向量集合), 文本(向量序列).
对这些样本一般使用向量化手法, 大家熟悉的是 word2vet, transformer. 这里我们了解一下 DeepSet.
文章参考 Deep Sets
有一些网文介绍也对此做了介绍.
纯翻译的 https://www.cnblogs.com/wangchangshuo/p/13853491.html
添加个人理解的 https://zhuanlan.zhihu.com/p/368357090
*(按键人写此, 目的是加深理解, 分享交流, 不做盈利. 故而不详细考证哪些人已经介绍过此文.)
1. 置换不变函数
DeepSet 处理的对象是 向量组成的集合 S, 输出是一个实数(或者向量).
令 Set \text{Set} Set 我集合范畴(范畴的对象看成是集合),
DeepSet : Set → R \text{DeepSet}:\text{Set} \to \R DeepSet:Set→R
S ∈ Set \text{S} \in \text{Set} S∈Set, DeepSet ( S ) = DeepSet ( s 1 , s 2 , ⋯ , s n ) = DeepSet ( s 2 , s 1 , ⋯ , s n ) \text{DeepSet}(\text{S})=\text{DeepSet}(s_1,s_2,\cdots,s_n)=\text{DeepSet}(s_2,s_1,\cdots,s_n) DeepSet(S)=DeepSet(s1,s2,⋯,sn)=DeepSet(s2,s1,⋯,sn)
把话说清楚一些. 集合看成是矩阵. 每个元素是一个行向量 s i s_i si. 学习到模型只和集合有关系, 和集合中哪个向量摆在第哪一行没有关系,即
DeepSet ( s 1 , s 2 , ⋯ , s n ) = DeepSet ( s σ ( 1 ) , s σ ( 2 ) , ⋯ , s σ ( n ) ) . \text{DeepSet}(s_1,s_2,\cdots,s_n)=\text{DeepSet}(s_{\sigma(1)},s_{\sigma(2)},\cdots,s_{\sigma(n)}). DeepSet(s1