请教一下,稀疏 典型相关分析(SCCA)的求解方法具体过程什么样子的呀,比如用最小二乘法求解,或者其他方法求解,最主要是求解过程我不知道,自己研究了一个星期,毫无进展,还越来越模糊了,
下面有个用最小二乘法求解的智能机器人的回答,但是公式的显示好像有问题,完全看不懂啊
哪位好心的 qian bei 能否指点一二,给一个简单的推导过程或者思路啥的
SCCA(sparse canonical correlation analysis)是一种用于研究两个高维数据集之间的相关性的方法。用最小二乘法求解SCCA的过程如下:
步骤1:设定问题。
给定两个高维数据矩阵 $X$ 和 $Y$ ,以及要求的第 $k$ 个分量。设 $X$ 的维度为 $n_1\times p_1$ ,$Y$ 的维度为 $n_2\times p_2$ ,第 $k$ 个分量的系数向量为 $\boldsymbol{\alpha}_k\in R^{p_1}$,$\boldsymbol{\beta}_k\in R^{p_2}$。
步骤2:计算相关系数矩阵。
计算数据矩阵 $X$ 和 $Y$ 的相关系数矩阵 $R_X$ 和 $R_Y$。
$$
R_X=\frac{X^\top X}{n_1-1},\quad R_Y=\frac{Y^\top Y}{n_2-1}
$$
步骤3:初始化系数向量。
初始化系数向量 $\boldsymbol{\alpha}_k$ 为随机向量,系数向量 $\boldsymbol{\beta}_k$ 为 $R_Y$ 的第一列向量。
步骤4:迭代求解系数向量。
重复执行以下迭代步骤,直到收敛:
- 计算残差向量 $u_k$ 和 $v_k$:
$$
u_k=X\boldsymbol{\alpha}_k-(X\boldsymbol{\alpha}_k)_{mean},\quad v_k=Y\boldsymbol{\beta}_k-(Y\boldsymbol{\beta}_k)_{mean}
$$
这里 $(X\boldsymbol{\alpha}_k)_{mean}$ 和 $(Y\boldsymbol{\beta}_k)_{mean}$ 分别是 $X\boldsymbol{\alpha}_k$ 和 $Y\boldsymbol{\beta}_k$ 的均值向量。
- 计算系数向量 $\boldsymbol{\alpha}_k$:
$$
\boldsymbol{\alpha}_k=R_X(\frac{1}{1+\lambda\cdot\sqrt{\boldsymbol{\beta}^\top_k R_Y \boldsymbol{\beta}_k}}u_k-\sum_{j(k-1)}\boldsymbol{\alpha}_j\boldsymbol{\beta}^\top_j v_k )
$$
$\lambda$ 是一个正则化参数。
- 计算系数向量 $\boldsymbol{\beta}_k$:
$$
\boldsymbol{\beta}_k=R_Y(\frac{1}{1+\lambda\cdot\sqrt{\boldsymbol{\alpha}^\top_k R_X \boldsymbol{\alpha}_k}}v_k-\sum_{j(k-1)}\boldsymbol{\alpha}_j\boldsymbol{\beta}^\top_j u_k )
$$
步骤5:输出结果。
输出系数向量 $\boldsymbol{\alpha}_k$ 和 $\boldsymbol{\beta}_k$。
找了一下,感觉这篇还是不错的。
https://baijiahao.baidu.com/s?id=1763761674715884101&wfr=spider&for=pc
由于是NLP能力,那么可以做的事情就非常的多,我主要讲下分词、实体抽取、词向量的一些基础知识,
上面是一个比较通用的流程,一个对话请求进来后,首先进行意图识别(关键字、相似问、词向量等),槽位实体解析,然后看下命中哪些个标准问,也就是意图已经识别到后,看下进行策略优化,看进入多轮还是单轮,然后根据回复管理进行意图返回。
中文分词:Python中分分词工具很多,包括盘古分词、Yaha分词、Jieba分词、清华THULAC等,大同小异,我们使用的是jieba分词,为什么使用jieba只要是他的ES插件比较方便,但也不是主要选择他的原因,我们分词还是依靠积累起来的特殊词库和行业词库,我们大概积累了800W多万个,基本解决了冷启动的问题
jieba分词支持的三种分词模式包括:
(1) 精确模式:试图将句子最精确地切开,适合文本分析;
(2) 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义问题;
(3) 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
我们主要用到了1、3,主要是用来做语义分析,和查找标准问,也就是所谓的意图。
实体抽取:我们把他分为几个类似,枚举、正则、关键字抽取,在另一篇文章中,我会着重写我们如何构建多轮会话系统的建模过程,实体抽取的问题在于如何快和准,之前参加过腾讯具备的机器人交流会,他们也是既有规划式,然后通过L2R进行在归总:
词向量:做词向量的算法很多,词向量经典模型:从word2vec、glove、ELMo到BERT,词向量对分词的准确性要求和语料要求很高,语料我们使用了很多家公司合起来的语料进行训练,也有试过腾讯实验室公布的词向量模型,如果在特殊行业,还是需要对语料进行积累,不然冷启动是个很大的问题,这里我就不一一讲解各个算法了,外面对这些算法的文章实在太多,搜一下一大把,不过后续我还是会逐一根据我自己的理解去写一些东西,帮助大家理解。
意图识别:个人认为是现在公共解决方案比较弱的一个环节,如何做好词向量、搜索引擎的得分、关键词的得分,然后进行组装,需要根据场景对这几个比重进行调节,比较繁琐