推荐系统: 数据、问题与算法

网络的迅速发展带来了信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低了,导致信息超载(information overload)问题。
解决信息超载问题一个非常有潜力的办法是推荐系统,它是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户的个性化系统。和搜索引擎相比推荐系统通过研究用户的兴趣偏好,进行个性化计算,由系统发现用户的兴趣点,从而引导用户发现自己的信息需求。一个好的推荐系统不仅能为用户提供个性化的服务,还能和用户之间建立密切关系,让用户对推荐产生依赖。
推荐系统现已广泛应用于很多领域,其中最典型并具有良好的发展和应用前景的领域就是电子商务领域。同时学术界对推荐系统的研究热度一直很高,逐步形成了一门独立的学科。
一些名词能很好的刻画推荐系统,如千人千面、猜你喜欢等。

数据

推荐系统包括一些基础数据与附加信息。

基础数据

令用户数量为nnn, 商品数量为mmm. 用户对商品评分构成的矩阵 R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m. 如下表所示:
在这里插入图片描述
分两种情况讨论:

  • 如果仅知道用户是否浏览过商品, rijr_{ij}rij的取值范围为{0,1}\{0, 1\}{0,1}R\mathbf{R}R表示浏览矩阵,rij=1r_{ij} = 1rij=1表示用户uiu_iui浏览过商品tjt_jtjrij=0r_{ij} = 0rij=0表示用户uiu_iui没有浏览过商品tjt_jtj,这种评分也被称为隐式评分(implicit ratings).
  • 如果用户给购买过的商品进行评分,R\mathbf{R}R表示评分矩阵,rijr_{ij}rij代表用户uiu_iui对商品tjt_jtj的评分,​一般的取值范围为{0,1,2,3,4,5}\{0, 1, 2, 3, 4, 5\}{0,1,2,3,4,5},0分表示用户没有购买过商品,1分表示用户不喜欢该商品,5分表示用户特别喜欢该商品.

用户及商品信息

用户有自身信息, 如: 性别、国籍、信仰、年龄、职业等等.
商品有自身信息, 以电影为例, 包括: 出品时间、导演、主演、类型 (爱情片、动画片、喜剧片、悬疑片等,可多选)、片长等等.
以饭店为例, 有位置 (城市、街道)、营业时间、类别 (川菜、粤菜、鲁菜).

社交网络

用户与用户之间存在着信任关系(或称为好友),这样就构成了一个基于信任的社交网络,这些社交关系有利于给用户进行画像.

用户评论/点赞

用户不仅要给商品打分, 还会给用户/商品写一些评论或点赞. 这些评论或点赞可能比分数提供更丰富的语义信息.

其它信息

推荐系统应用广泛,如新闻、商品、音乐、视频等,都可以作为推荐的对象,针对不同应用场景,会收集很多相关信息,后续根据不同应用场景再补充。

问题

推荐系统的核心问题就是预测用户对商品的偏好。这种偏好可以用一个评分来表示,也可以用是否有浏览/购买的意愿来表示。针对具体的应用场景,需要说明输入、输出、优化目标、约束条件。

基于浏览矩阵的推荐

问题:浏览/购买预测
输入:训练矩阵Rt=(rijt)n×m\mathbf{R}^t = (r_{ij}^t)_{n \times m}Rt=(rijt)n×m,所有评分矩阵R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m.
输出:预测矩阵P=(pij)n×m\mathbf{P} = (p_{ij})_{n \times m}P=(pij)n×m.
优化目标:最大化准确率
max⁡acc(Rt,P,R)=∣{(i,j)∈R∣rijt=0,rij=1,pij=rij}∣∣{(i,j)∈R∣rijt=0,rij=1}∣\max acc(\mathbf{R}^t, \mathbf{P}, \mathbf{R}) = \frac{|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} = 1, p_{ij} = r_{ij}\}|}{|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} = 1\}|}maxacc(Rt,P,R)={(i,j)Rrijt=0,rij=1}{(i,j)Rrijt=0,rij=1,pij=rij} .
其中:

  1. R\mathbf{R}R用于测试阶段评价推荐算法的准确率, 不能用于训练.
  2. 完备矩阵 R\mathbf{R}R在现实中并不存在.
  3. 0 具有了有同解释 (语义), 在训练集Rt\mathbf{R}^tRt中表示未知, 在预测矩阵P\mathbf{P}P中表示不喜欢或不购买, 在完备矩阵R\mathbf{R}R中既可能表示未知, 也可能表示不喜欢.

基于评分矩阵的预测

问题:评分预测
输入:训练矩阵Rt=(rijt)n×m\mathbf{R}^t = (r_{ij}^t)_{n \times m}Rt=(rijt)n×m,所有评分矩阵R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m.
输出:预测矩阵P=(pij)n×m\mathbf{P} = (p_{ij})_{n \times m}P=(pij)n×m.
优化目标:

  • 最小化平均绝对误差 (mean absolute error)
    min⁡mae(Rt,P,R)=Σ(i,j)∈{(i,j)∈R∣rijt=0,rij>0}∣pij−rij∣∣{(i,j)∈R∣rijt=0,rij>0}∣.\min mae(\mathbf{R}^t, \mathbf{P}, \mathbf{R}) = \frac{\Sigma_{(i,j) \in \{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} > 0\}}\left|p_{ij} - r_{ij}\right|}{|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} > 0\}|}. minmae(Rt,P,R)={(i,j)Rrijt=0,rij>0}Σ(i,j){(i,j)Rrijt=0,rij>0}pijrij.
  • 最小化均方误差 (root mean square error)
    min⁡rsme(Rt,P,R)=Σ(i,j)∈{(i,j)∈R∣rijt=0,rij>0}(pij−rij)2∣{(i,j)∈R∣rijt=0,rij>0}∣.\min rsme(\mathbf{R}^t, \mathbf{P}, \mathbf{R}) =\sqrt{ \frac{\Sigma_{(i,j) \in \{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} > 0\}}(p_{ij} - r_{ij})^2}{\left|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} > 0\}\right|}}. minrsme(Rt,P,R)={(i,j)Rrijt=0,rij>0}Σ(i,j){(i,j)Rrijt=0,rij>0}(pijrij)2.

基于评分矩阵的推荐

问题:基于评分矩阵的推荐
输入:训练矩阵Rt=(rijt)n×m\mathbf{R}^t = (r_{ij}^t)_{n \times m}Rt=(rijt)n×m,所有评分矩阵R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m, 推荐阈值rlr_lrl.
输出:预测矩阵P=(pij)n×m\mathbf{P} = (p_{ij})_{n \times m}P=(pij)n×m.
优化目标:最大化准确率
max⁡acc(Rt,P,R)=∣{(i,j)∈R∣rijt=0,rij≥rl,pij≥rl}∣∣{(i,j)∈R∣rijt=0,rij≥rl}∣.\max acc(\mathbf{R}^t, \mathbf{P}, \mathbf{R}) = \frac{|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} \ge r_l, p_{ij} \ge r_{l}\}|}{\left|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} \ge r_l\}\right|}. maxacc(Rt,P,R)={(i,j)Rrijt=0,rijrl}{(i,j)Rrijt=0,rijrl,pijrl}.

交互推荐

在实际应用场景中,交互推荐是主流的推荐方式,推荐系统都会根据用户的选择优化推荐列表,也就是说用户这一轮的选择会影响下一轮的推荐列表。比如推荐系统一次给用户推荐20个商品,用户在本轮推荐中选择了商品1、3、5;这样的选择就会反馈给系统,系统根据用户的选择优化下一轮的推荐。交互式推荐用英文表达为 conversational recommendation.
场景描述:
对每个用户

登录系统;
do{获得系统推荐的一组项目 (固定为k个);用户在其中选择喜欢的所有项目;
}while(喜欢的项目为0)

对系统

while(true){接收用户的选择,并将用户的选择写入灰列表(grey list);if(用户是不成熟用户){采用基于流行度的算法产生推荐列表;}else{采用基于矩阵分解的算法产生推荐列表;}
}

通过用户浏览/购买商品的数量达到某个阈值来表示用户的成熟度。如果达到某个阈值,则称该用户为成熟用户,否则为不成熟用户。
问题:交互式推荐
输入:训练矩阵Rt=(rijt)n×m\mathbf{R}^t = (r_{ij}^t)_{n \times m}Rt=(rijt)n×m,所有评分矩阵R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m.
输出:预测矩阵P=(pij)n×m\mathbf{P} = (p_{ij})_{n \times m}P=(pij)n×m.
优化目标:最大化准确率
max⁡acc(Rt,P,R)=∣{(i,j)∈R∣rijt=0,rij=1,pij=rij}∣∣{(i,j)∈R∣rijt=0,rij=1}∣.\max acc(\mathbf{R}^t, \mathbf{P}, \mathbf{R}) = \frac{\left|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} = 1, p_{ij} = r_{ij}\}\right|}{\left|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} = 1\}\right|}. maxacc(Rt,P,R)={(i,j)Rrijt=0,rij=1}{(i,j)Rrijt=0,rij=1,pij=rij}.

三支推荐

推荐行为除了推荐和不推荐之外,实际上还存在着推广的行为,为了模拟这种行为,我们引入了三支推荐。
我们以下图为例来说明这个场景:
在这里插入图片描述
(1)我们设置了一个3×23 \times 23×2的代价敏感矩阵,行表示系统对用户采取的行为,包括推荐(Recommend)、推广(Promote)、不推荐(Not recommend),列表示用户的偏好,包括喜欢(Like),不喜欢(Dislike)。根据三支决策理论,利用该代价矩阵可以计算出推荐阈值α∗\alpha^*αβ∗\beta^*β
(2)利用随机森林我们可以预测出用户uiu_iui喜欢商品tjt_jtj的程度,用概率pijp_{ij}pij来表示;
(3)当pij>α∗p_{ij} \gt \alpha^*pij>α,系统将推荐(Recommend)商品tjt_jtj给用户uiu_iui;当pij<β∗p_{ij} \lt \beta^*pij<β,系统将不推荐(Not recommend)商品tjt_jtj给用户uiu_iui;当β∗≤pij≤α∗\beta^* \le p_{ij} \le \alpha^*βpijα,系统将给用户uiu_iui分发优惠券进行推广(promote)商品tjt_jtj.
(4)为了描述下面的问题,我们需要用下面的公式进行映射:

  • 根据偏好阈值rlr_lrl将用户的评分映射为偏好:
    ψ(rij,rl)=1,当rij>rl\psi(r_{ij}, r_l) = 1, 当r_{ij} \gt r_lψ(rij,rl)=1,rij>rl;
    ψ(rij,rl)=2,当rij≤rl\psi(r_{ij}, r_l) = 2, 当r_{ij} \le r_lψ(rij,rl)=2,rijrl;
  • 将预测值映射为推荐(Recommend)、推广(Promote)、不推荐(Not recommend)
    ϕ(pij,α∗,β∗)=1,当pij>α∗\phi(p_{ij}, \alpha^*, \beta^*) = 1, 当p_{ij} \gt \alpha^*ϕ(pij,α,β)=1,pij>α;
    ϕ(pij,α∗,β∗)=2,当β∗≤pij≤α∗\phi(p_{ij}, \alpha^*, \beta^*) = 2, 当\beta^* \le p_{ij} \le \alpha^*ϕ(pij,α,β)=2,βpijα;
    ϕ(pij,α∗,β∗)=3,当pij<β∗\phi(p_{ij}, \alpha^*, \beta^*) = 3, 当p_{ij} \lt \beta^*ϕ(pij,α,β)=3,pij<β.
    问题:三支推荐
    输入:训练矩阵Rt=(rijt)n×m\mathbf{R}^t = (r_{ij}^t)_{n \times m}Rt=(rijt)n×m,所有评分矩阵R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m, 代价矩阵C=(ckl)3×2C = (c_{kl})_{3 \times 2}C=(ckl)3×2.
    输出:预测矩阵P=(pij)n×m\mathbf{P} = (p_{ij})_{n \times m}P=(pij)n×m.
    优化目标:最小化代价
    min⁡cost(Rt,P,R,C)=∑k∈{1,2,3},l∈{1,2}ckl×∣{(i,j)∈R∣ϕ(pij,α∗,β∗)=k,ψ(rij,rl)=l}∣∣{(i,j)∈R∣rijt=0,rij>0}∣.\min cost(\mathbf{R}^t, \mathbf{P}, \mathbf{R}, C) = \frac{\sum_{k \in \{1,2,3\}, l \in \{1, 2\}} c_{kl} \times |\{(i, j) \in \mathbf{R} | \phi(p_{ij}, \alpha^*, \beta^*) = k, \psi(r_{ij}, r_l) = l\}|}{|\{(i, j) \in \mathbf{R} | r_{ij}^t = 0, r_{ij} > 0\}|}. mincost(Rt,P,R,C)={(i,j)Rrijt=0,rij>0}k{1,2,3},l{1,2}ckl×{(i,j)Rϕ(pij,α,β)=k,ψ(rij,rl)=l}.

[1] Three-way recommender systems based on random forests

[2] Regression-based three-way recommendation

推荐系统的魔法边界

在很多时候,我们很想知道,给定一个推荐系统的数据集,它的精度上限(或者误差下限,为了更容易被记住,又取名为魔法边界)是多少,一旦知道了这个值,我们就可以确定算法到底还有多大的优化空间。换句话来说,就是数据质量本身决定了算法的精度上限,一旦数据集给定,这个魔法边界就确定了。
问题描述如下:

  • O=(oij)n×m\mathbf{O} = (o_{ij})_{n \times m}O=(oij)n×m为一个理想的评分数据集(ideal rating data),即假设用户在给商品评分的时候没有受到情绪波动、外界环境等因素影响,用户的偏好是恒定的;
  • R=(rij)n×m\mathbf{R} = (r_{ij})_{n \times m}R=(rij)n×m为一个实际的评分数据集(real rating data), 用户在评分的时候受到情绪波动、外界环境等因素影响,会带入一些自然噪声(nature noise);
  • N=∣{(i,j)∈R∣1≤i≤n,1≤j≤m,rij>0}N =|\{(i, j) \in \mathbf{R} | 1 \le i \le n, 1 \le j \le m, r_{ij} >0\}N={(i,j)R∣1in,1jm,rij>0}|;
  • 基于MAE评价指标的魔法边界定义为:MBGR(mae)=∣O−R∣NMBGR(mae) = \frac{|\mathbf{O} - \mathbf{R}|}{N}MBGR(mae)=NOR
  • 基于RSME评价指标的魔法边界定义为:MBGR(rsme)=∣∣O−R∣∣2NMBGR(rsme) = \frac{||\mathbf{O} - \mathbf{R}||_2}{N}MBGR(rsme)=N∣∣OR2
    我们认为魔法边界就是由于自然噪声引起的偏差。要估计这个魔法边界是一个很有挑战性的工作,因为实际环境中理想数据集O=(oij)n×m\mathbf{O} = (o_{ij})_{n \times m}O=(oij)n×m是采集不到的。
    针对理想数据集的问题,有很多学者在这个方面做了一些尝试,目前主要有经验方法和理论方法两大类。
  • 经验方法的学者通过采集同一用户对同一商品的多次评分,然后利用多次评分的平均来作为用户uiu_iui对商品tjt_jtj的理想评分oijo_{ij}oij。很显然,这种方法有很多缺陷,一方面同一用户对同一商品进行多次评分非常的无趣(boring),另一方面多次评分会带来新的噪声。
  • 为了解决经验方法带来的问题,我们提出了一些理论方法(见已发表的论文)

[3] Magic barrier estimation models for recommended systems under normal distribution
[4] A Mixture-of-Gaussians model for estimating the magic barrier of the recommender system. Applied Soft Computing. (2022-114)108162

我们做了如下假设:
∣O−R∣N≤min⁡∣P−R∣N\frac{|\mathbf{O} - \mathbf{R}|}{N} \le \min \frac{|\mathbf{P} - \mathbf{R}|}{N}NORminNPR

∣∣O−R∣∣2N≤min⁡∣∣P−R∣∣2N\frac{||\mathbf{O} - \mathbf{R}||_2}{N} \le \min \frac{||\mathbf{P} - \mathbf{R}||_2}{N}N∣∣OR2minN∣∣PR2
该假设可以解读为:用户对商品的自然噪声所带来的偏差低于预测所带来的偏差。因为用户对商品的自然噪声是用户自己所导致的,而预测通常是利用其他用户对目标商品或者目标用户对其它商品的评分来估计目标用户对目标商品的评分,所以我们又可以解读为用户自身比别人更了解自己。
和学生讨论后,发现还可以这样来理解这个假设,就是等式左边是自然噪声带来的偏差,等式右边不仅包含了自然噪声带来的偏差,还包含了预测算法带来的偏差,所以应该是小于等于。
今天又和闵老师讨论了一下,认为不能用噪声,而应该用数据本身分布带来的不确定性,因为概率本身就是不确定性的描述,最好用信息量,information entropy之类的统计信息来描述
所以,我暂时改为:等式左边是数据本身分布带来的不确定性,等式右边不仅包含了数据本身分布带来的不确定性,还包含了预测算法带来的不确定性,所以应该是小于等于。

推荐算法分类

推荐系统的算法众多,也有很多种不同的分类。下面列出几个主要的分类:

根据推荐原则分类

  • 基于相似度的推荐(物以类聚,人以群分)
  • 基于知识的推荐(标签,定义)
  • 基于模型的推荐(发现、学习、训练一个模型,机器学习)

根据推荐是否个性化分类

  • 基于统计的推荐(所有人都一样,可以用于解决冷启动问题)
  • 个性化推荐

根据实时性分类

  • 离线推荐
  • 实时推荐

根据数据源分类(或根据策略分类Strategies)

  • 基于人口统计学的推荐(数据源是关于用户的,用户画像,可以用于解决冷启动问题,用户勾选)
  • 基于内容的推荐(数据源是物品item,建立用户档案,Content-based filtering,可以解决 data sparsity and cold-start问题)
  • 基于协同过滤(Collaborative filtering (CF))的推荐(数据来源基于行为数据)
    (1)基于近邻(neighborhood-based)的协同过滤推荐(也叫基于内存Memory-based的方法,CiteULike,Youtube和Last.fm等实际应用程序中采用,但非常耗时)
    -----------基于用户的协同过滤推荐(User-CF)
    -----------基于物品的协同过滤推荐(Item-CF)
    (2)基于模型(model-based)的协同过滤推荐(可以将辅助信息side information馈入到预测模型中,从而助于解决数据稀疏和冷启动问题)
    -----------潜在因子模型(latent factor models)
    -----------表示学习模型(representation learning models)
    -----------深度学习模型(deep learning models,最新的方法)
    (3)混合推荐(Hybrid methods)
    ----加权混合
    ----切换混合
    ----分区混合
    ----分层混合

我们的工作

三支推荐

  • 基于随机森林的三支推荐(Three-way recommender systems based on random forests)
  • 三支回归推荐(Regression-based three-way recommendation)

交互推荐

  • 交互场景下的二支推荐
  • 交互场景下的三支推荐

魔法边界估计

  • 基于高斯假设的估计(Magic barrier estimation models for recommended systems under normal distribution)
  • 基于混合高斯(MoG)的估计
  • 基于混合指数分布(MoEP)的估计

提高效率的推荐

  • M-Distance
  • 多通道特征向量(MCFV)

可解释性推荐

  • 矩阵分解:R\mathbf{R}R由两个子矩阵X\mathbf{X}XY\mathbf{Y}Y来表达,即R=XY\mathbf{R} = \mathbf{X}\mathbf{Y}R=XY. 其中向量xix_ixi表示用户uiu_iui的特征向量,向量yjy_jyj表示商品tjt_jtj的特征向量;
  • 可解释性矩阵分解:当用户uiu_iui偏好于商品tjt_jtj时,两者具有强相关性,其用户特征向量xix_ixi与商品特征向量yjy_jyj在潜在空间上应互相接近,即∥xi−yj∥→0\|x_i -y_j \| \rightarrow 0xiyj0

参考文献

[1] 张恒汝,闵帆,Three-way recommender systems based on random forests, Knowledge-Based Systems, 2016, 91: 275-286.
[2] 张恒汝,闵帆,石兵,Regression-based three-way recommendation,Information Sciences, 2017, 378, 444-461.
[3] 张恒汝, 闵帆等. Magic barrier estimation models for recommended systems under normal distribution, Applied Intelligence, 2018: 1-8.
[4] 张恒汝等. A Mixture-of-Gaussians model for estimating the magic barrier of the recommender system. Applied Soft Computing. (2022-114)108162

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

睡眠音频分割及识别问题(八)--数据采集

问题 在采用PANN或者YAMNet框架进行学习的时候&#xff0c;没有梦话、磨牙等睡眠音频数据&#xff0c;在一些公开数据集上也没有找到&#xff08;如果有哪位读者知道&#xff0c;麻烦给我在评论区留言&#xff0c;万分感谢&#xff09;。 公开数据集包括&#xff1a; &#xf…

旋转矩阵公式生成器_坐标变换(8)—复特征值与旋转

1.共轭复特征值设是的实矩阵&#xff0c;假设是的特征值&#xff0c;为对应的特征向量&#xff0c;则同样是的特征值&#xff0c;而是对应的特征向量&#xff0c;所以&#xff0c;当是的实矩阵&#xff0c;它的复特征值以共轭复数对出现。2. rotation-scaling matrix假如,为实数…

睡眠音频分割及识别问题(九)--Android下的YAMNet

部署PANNs模型面临的问题 加载模型出错 在使用PANNs模型时&#xff0c;在PC端可以较好的运行&#xff0c;可是在Android端运行的时候&#xff0c;编译过程提示缺少libpytorch_jni.so文件&#xff0c;导致无法加载模型&#xff0c;无法预测。&#xff08;如果有读者可以解决这个…

linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...

第二波命令正向我方来袭 &#xff1a;开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志1.1 linux开机启动过程1.1.1 开机自检(BIOS)-- MBR引导-- GRUB菜单--加载内核(kernel)--运行INIT进程--读取/etc/inittab配置文件--执行/etc/rc.sysinit脚本(初始化脚本…

睡眠音频分割及识别问题(十)--Java读取wav文件

简介 Waveform Audio File Format&#xff08;WAVE&#xff0c;又或者是因为扩展名而被大众所知的 wav&#xff09;&#xff0c;是微软与 IBM公司所开发在个人电脑存储音频流的编码格式。 由于项目需要从 wav 文件中读取音频数据&#xff0c;现有许多框架的 API 文档参差不齐&…

python 开发板 i2s_[Craftor原创] I2S总线接口设计(Verilog)

本文有Craftor原创&#xff0c;转载请保留出处。 I2S是数字音频的接口&#xff0c;这里不用多说&#xff0c;请读者自己查阅相关资料。 本文中要设计的是FPGA与数字音频芯片的I2S接口时序。简单点说&#xff0c;就是通过FPGA向音频芯片写数据&#xff0c;通过的是I2S总线&#…

深度学习(1)--引言

表示学习(representation learning) 使用机器学习来发掘表示本身&#xff0c;而不仅仅把表示映射到输出。 表示学习算法的典型例子为自编码器(autoencoder)。自编码器由一个编码器(encoder)函数和一个解码器(decoder) 函数组合而成。 编码器&#xff1a;将输入数据转换为一种…

深度学习(2)--常见概率分布(1)

许多简单的概率分布在机器学习的众多领域中都非常有用&#xff0c;这个内容将分为两个部分来说明&#xff0c;第一个部分介绍伯努利分布、二项式分布、多项式分布及范畴分布&#xff0c;第二个部分介绍高斯分布、指数分布、Laplace分布、Dirac分布、经验分布及混合分布。 伯努…

gdb 调试_GDB调试指南-源码查看

前言我们在调试过程中难免要对照源码进行查看&#xff0c;如果已经开始了调试&#xff0c;而查看源码或者编辑源码却要另外打开一个窗口&#xff0c;那未免显得太麻烦。文本将会介绍如何在GDB调试模式下查看源码或对源码进行编辑。 准备工作为了说明后面的内容&#xff0c;我们…

深度学习(2)--常见概率分布(2)

上一部分介绍了伯努利分布、二项式分布、多项式分布以及范畴分布&#xff0c;这里将继续介绍高斯分布、指数分布、Laplace分布、Dirac分布、经验分布及混合分布。 高斯分布 高斯分布又称为正态分布&#xff0c;其图形为钟形曲线(bell-shaped curve)&#xff0c;特点是中间高、…

update 千万数据_mysql学习(四)数据库

创建数据库create database 数据库名; 创建数据库的时候&#xff0c;我们应该记住以下几点&#xff1a; 1 不能与其他数据库名重复 2 名称可以由任意字母&#xff0c;阿拉伯数字&#xff0c;下划线&#xff0c;美元符&#xff0c;但是必须以字母开头 3 名称最长为64个字符&…

linux gpio按键驱动程序,Linux GPIO Key 驱动的加载

gpio-keys是基于input子系统实现的一个通用的GPIO按键驱动,基于platform来实现,位于drivers/input/keyboard/gpio_keys.c,这个文件是硬件无关的,而硬件有关的需要我们自己来注册.进入这个gpio_keys.c这个函数,第一步就是初始化.static int __init gpio_keys_init(void){return …

深度学习(3)--常用激活函数的有用性质

1 sigmoid函数 sigmoid函数是一个在生物学中常见的S型函数&#xff0c;也称为S型生长曲线。 sigmoid函数由下列公式定义: σ(x)11e−x(1)\sigma(x) \frac{1}{1 e^{-x}} \tag1σ(x)1e−x1​(1) sigmoid函数的级数表示&#xff1a; σ(x)1214x−148x31480x5−1780640x73114515…

kvm虚拟机不通网关_linux ssh 虚拟机下CentOS7开启SSH连接

一. 没开启&#xff0c;连接会报错二. 开启后&#xff0c;连接成功在虚拟机(Vmware Workstation)下&#xff0c;安装了CentOS7&#xff0c;现在想通过SSH工具连接虚拟机中的CentOS71、 首先&#xff0c;要确保CentOS7安装了 openssh-server&#xff0c;在终端中输入 yum list i…

linux netstat服务,linux netstat查看服务和端口状态

netstat可以查看linux系统中正在使用的服务和端口情况常见参数-a (all)显示所有选项&#xff0c;默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名&#xff0c;能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服务状态-p …

memcpy函数实现_等比例缩放c++ opencv 实现

背景&#xff1a;在目标检测算法中&#xff0c; 输入图片等比例resize时mAP比直接resize会高几个点。实现&#xff1a;使用c 和opencv实现(之所以没用python&#xff0c;是因为用于生产环境)先贴代码&#xff1a;#include <math.h> #include <opencv2/core/core.hpp&g…

睡眠音频分割及识别问题(十一)--基于Android的YAMNet音频识别(总结)

WAV文件格式介绍 WAV文件遵守资源交换文件格式之规则&#xff0c;在文件的前44(或46)字节放置标头(header)&#xff0c;使播放器或编辑器能够简单掌握文件的基本信息&#xff0c;其内容以区块(chunk)为最小单位&#xff0c;每一区块长度为4字节&#xff0c;而区块之上则由子区…

黑白棋游戏水平(2)--pytorch剪裁

系统需求 Linux系统&#xff0c;并已安装git、gcc、g、cmake⼯具 下载源码 从github克隆Pytorch仓库 git clone --recursive https://github.com/pytorch/pytorch如果已经克隆过&#xff0c;则使⽤以下命令更新 git submodule sync git submodule update --init --recurs…

二维码图像去噪文献调研(1)--Real Image Denoising with Feature Attention

简介 &#xff08;1&#xff09; 论文&#xff08;包括期刊和发表时间&#xff09;&#xff1a; Real Image Denoising with Feature Attention&#xff08;ICCV 2019&#xff09; &#xff08;2&#xff09; 论文链接&#xff1a; https://arxiv.org/pdf/1904.07396.pdf &…

idea gui插件_给 IDEA 换了酷炫的主题,研发小姐姐看到:feel so high。。。

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]IntelliJ IDEA介绍IDEA&#xff0c;全称 IntelliJ IDEA &#xff0c;是 Java 语言的集成开发环境&#xff0c; IDEA 在业界被公认为是最好的 java 开发工具之一&#xff0c;尤其在智能 代码助手、代码自动提示、重构、 J2E…