当前位置: 首页 > news >正文

AI/机器学习(计算机视觉/NLP)方向面试复习3

1. Pooling 有哪些方式?pytorch的实现?

Pooling可以分成:最大池化,平均池化,全局平均池化,随机池化,空间金字塔池化。

1. 最大池化(Max Pooling)

最大池化是最常用的池化技术之一。它将输入图像划分为若干非重叠的矩形区域,然后对每个区域输出最大值。这种方法在实践中非常有效,能够很好地捕捉图像中的显著特征

2. 平均池化(Average Pooling)

平均池化也将输入划分为多个区域,但它输出的是这些区域内的平均值。相较于最大池化,平均池化更平滑,但可能会丢失一些细节信息,因为它不像最大池化那样能突出显著特征。

3. 全局平均池化(Global Average Pooling)

全局平均池化是一种极端形式的平均池化,它计算整个特征图的平均值,通常用于卷积神经网络的最后阶段,直接输出用于分类的特征。这种方法能够显著减少模型的参数数量。

4. 随机池化(Stochastic Pooling)

随机池化是一种概率论的池化方法,不是简单地取最大值或平均值,而是根据预定义的概率分布(通常基于输入特征的大小)来选择池化区域内的元素。这种方法有助于增加模型的泛化能力,因为它引入了随机性。

6. 空间金字塔池化(Spatial Pyramid Pooling)

空间金字塔池化(SPP)是一种灵活的池化策略,它可以保持空间层次结构,允许网络接收任意大小的输入。SPP 通过在多个尺度上实现池化来捕获多层次的特征,这在一些特定的场景中非常有用,比如在需要处理不同分辨率的图像时。

2. attention的各种变形

self-attention里存在的问题是,当序列长度N非常大时,通过query(N,S) key(S,N) 相乘得到的Attention matrix(N,N)矩阵非常大。这里的计算过程非常复杂,就需要对self-attention进行简化。

而且这种简化经常会用在图像处理上,因为图像输入256×256的patch时,按像素为1个单位,N=256*256,过于大了。

一个方法是用感受野。把Attention matrix除了感受野以外的值设为0:(local attention

但是这样设置感受野后,就和CNN没什么区别了。所以不太好。

Stride Attention:类似空洞卷积。每次看多几格的内容,例如空两格看三格以外的内容。

Local Attention:在原来的sequence里加上一个特殊的token。只有global token能获取所有的信息,其他token之间就不有attention了。Longformer用到了Global attention和striding attention, Big Bird用了global attention+striding attention和random attention。

Reformer:如何在Attention Matrix里,判断哪些地方有比较大的attention value,哪些地方的attention value比较小?然后把value比较大的取出来,当成attention。

这样做的方式是对query和key进行clustering聚类。clustering的加速方法有很多,可以快速将相近的query和key放在一起。只计算同类的query和key的attention,不同类的query和key的attention位为0,可以加速。

但这样是人类判断方式,根据任务判断两者之间是否相近。同样,也可以实现一个神经网络来判断key,value之间是否相近:Sinkhorn Sorting Network。

Linformer:本质在说attention matrix是一个低秩矩阵,列之间相关性很大,根本不需要构建这么大的attention matrix。就对列进行压缩。具体做法是从key中找到representative keys。

具体的压缩方法有:(1)对key做卷积进行压缩,(2)key是N维的,直接乘一个(N×K)的矩阵

k,q first -> v,k first 最后一个点是,当matrix相乘的顺序不同时,计算的效率也不一样。KQ先相乘再乘V比下面:先V乘K再乘Q的效率大很多。

3. 如何输入数据同时包括float类型的数据和文本数据,如何将它们都输入到网络里?

首先分别处理:

(1)对浮点数进行归一化和标准化处理

(2)对文本数据进行向量化处理,如使用词袋模型(BOW)、TF-IDF、词向量(如Word2Vec、GloVe)或更高级的BERT等方式。

然后进行特征合并:

将预处理后的浮点数和文本数据连接起来

可以用一个embedding层提取文本数据,再用一个dense层处理浮点型数据,然后用concatenate层连接起来。

4. 如何判断两个句子之间的相似性?

(1)余弦相似度。将两个向量之间的夹角。可以用来比较两个句子在向量之间的相似性。首先把句子转成TF-IDF向量,计算余弦相似度。

(2)Jaccard相似度:比较两个句子的词的集合的相似性。它是度量两个集合交集和并集的比率。

(3)基于词向量的方法:word2vec,转成向量后计算词向量的平均值。

(4)基于深度学习的方法:BERT

5. 如何去除噪声或异常点?

(1)统计方法,可以用均值和标准差来计算。

均值去除方法:计算数据的均值,减去均值来中心化数据。

标准化方法:将数据减去均值后除以标准差,使得数据具有零均值和单位标准差。

Z-Score:利用zscore检测异常值,通常设定一个阈值,超出这个阈值的点被视为异常点。

四分位数计算法:(IQR)计算数据的四分位数和四分位距,低于Q1-1.5*IQR或者高于Q3+1.5*IQR的点被视为异常。

(2)滤波方法:

简单移动平均(SMA):计算一个窗口内数据点的平均值,并且用这个平均值平滑数据。

找一个滤波核,无论是一维二维都可以通过移动窗口进行平滑。

卡尔曼滤波:一种递归滤波器。

(3)机器学习方法:

聚类 K-means方法:检查哪些数据点不属于任何聚类中心。

孤立森林:基于决策树的方法,构建树并且根据树的深度检测异常点。

(4)小波变换:

将数据转换到频域,根据频域计算

6. 使用pytorch实现一个cross attention模块

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何通过一条SQL变更多个分库分表?
  • iptables 限制端口仅特定IP访问。
  • Apache DolphinScheduler 3.2.2 版本正式发布!
  • 一文解析:代理IP的五大优势
  • 【C#】获取DICOM图像像素的像素值
  • 【CTFWP】ctfshow-web42
  • Spark实时(一):StructuredStreaming 介绍
  • 推荐系统三十六式学习笔记:工程篇.常见架构25|Netflix个性化推荐架构
  • 【SpringBoot教程:从入门到精通】掌握Springboot开发技巧和窍门(四)-Vue项目配置环境、导航栏
  • MySQL常见指令
  • Python 高阶语法
  • MiniExcel:.NET中处理Excel的高效方案
  • 金蝶插件调用HTTP请求 并解析JSON
  • RabbitMQ普通集群搭建指南
  • 【React】JSX:从基础语法到高级用法的深入解析
  • [nginx文档翻译系列] 控制nginx
  • bearychat的java client
  • JavaScript的使用你知道几种?(上)
  • JavaScript异步流程控制的前世今生
  • Making An Indicator With Pure CSS
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 从0到1:PostCSS 插件开发最佳实践
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关于for循环的简单归纳
  • 机器学习学习笔记一
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聚类分析——Kmeans
  • 目录与文件属性:编写ls
  • 批量截取pdf文件
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 算法-图和图算法
  • 提醒我喝水chrome插件开发指南
  • 用jQuery怎么做到前后端分离
  • elasticsearch-head插件安装
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​ArcGIS Pro 如何批量删除字段
  • "无招胜有招"nbsp;史上最全的互…
  • #07【面试问题整理】嵌入式软件工程师
  • #数据结构 笔记三
  • #微信小程序(布局、渲染层基础知识)
  • (2)STM32单片机上位机
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (十六)视图变换 正交投影 透视投影
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)为什么要选择C++
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • ***测试-HTTP方法
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离