自然算法 - AI面试基础补全

news/2024/4/20 0:28:48/文章来源:https://blog.csdn.net/weixin_44077556/article/details/128115549
  1. 手撕BP神经网络
  2. 手写Bert和Transformer(BERT很细节的地方,比如文字标签CLS,par)
  3. 学习pytorch,tensorflow

AI算法岗位

可看网站

  1. 牛客网站
    在这里插入图片描述

面经回复

  1. github

    在这里插入图片描述

项目连接

算法工程师岗位必备知识

  1. 问答
  • ELMO、GPT、BERT三者之间的区别
    • 特征提取器:elmo采用LSTM进行提取,GPT和BERT采用Transformer进行提取。很多任务中Tranformer特征提取能力强于LSTM,elmo采用1层静态向量+2层lSTM,多层提取能力有限,而GPT和BERT中的Transformer可采用多层,并行计算能力强;单、双向语言模型:GPT采用单向语言模型,elmo和bert采用双向语言模型,但是elmo实际上是两个单向语言模型(方向相反)的拼接,这种融合特征的能力弱。GPT和BERT都采用Transformer,Transformer是encoder-decoder结构,GPT的单向语言模型采用decoder部分,decoder的部分见到的都是不完整的句子;bert的双向语言模型则采用encoder部分。
  • GloVe的训练过程是怎样的
    • 实质还是监督学习,虽然Glove不需要人工标注,为无监督学习,但实质上还是需要定义label;向量w和w_为学习参数,本质上与监督学习的训练方法一样,采用了AdaGrad的梯度下降算法,对矩阵X中的所有非零元素进行随机采样,学习曲率设为0.05,在Vector size小于300的情况下迭代了50次,其他大小的vectors上迭代了100次,直至收敛。最终学习的是两个词向量是w和
  • sigmoid函数
    • 和正余弦函数比较像,虽然坐标区间是负无穷到正无穷,但是值域是-1,1(开区间),连续光滑函数,其是处处可导的
  • 频率学派和贝叶斯学派的区别
    • 频率学派认为研究的参数是固定的,数据是无限的,可以从无限的抽样里获取有限的结果,其不存在先验概率;贝叶斯学派认为世界是变化的,只有数据是固定的,参数是会变化的,其后验概率是先验概率的修正。(p(A交B)=P(B)*P(B|A))
  • SGD和Adam原理
    • SGD叫做随机梯度下降,它每次迭代计算mini-batch数据集的梯度,然后更新参数;Adam利用梯度的一阶矩估计和二阶矩估计动态更新参数的学习率,然后通过偏置矫正,最终的达到一个学习率的随机范围,使得参数趋于平稳
  • L1不可导时怎么做
    • 坐标轴下降法避免参数不可导。因为损失函数是按照负梯度下降的方式进行,而坐标轴下降法是按照坐标轴进行。比如有m个特征值,先固定m-1个特征值,使得某个特征先求得局部最优解来避免损失函数不可导的问题
  • 最大似然估计和最大后验概率的区别
    • 最大似然估计是利用观察数据进行计算的,而且最大似然估计中的采样满足所有采样,都是独立同分布的假设;而最大后验概率是利用经验数据来获得观察点估计,它融入了先验规律,可以看做是完全规则化的最大似然估计
  • Transformer是如何训练的?测试阶段如何进行测试呢?
    • Transformer训练过程与Seq2seq类似,首先Encoder端得到输入的encoding表示,并将其输入到decoder端做交互式attention,之后再Decoder端接收其相应的输入,经过多头self-attention模块之后,结合Encoder端的输出,再经过FFN,得到Decoder端的输出之后,最后经过一个线性全连接层,就可以通过softmax来预测下一个单词(token),然后根据softmax多分类的损失函数,将loss反向传播即可,所以从整体上来说,Transformer训练过程就相当于一个有监督的多分类问题。需要注意的是,Encoder端可以并行计算,一次性将输入序列全部encoding出来,但Encoder端不是一次性把所有单词(token)预测出来的,而是像seq2seq一样一个接着一个预测。而对于测试阶段,其与训练阶段唯一不同的是Decoder端最底层的输入。
  • BERT模型可以使用无监督的方法做文本相似度任务?
    • 首先一点是在不finetune的情况下,cosine similairty绝对值没有实际意义,bert pretrain计算的cosine similairty都是很大的。如果直接以cosine similarity>0.5之类的阈值来判断相似不相似,效果肯定很差。如果用作排序,也就是cosine(a,b)>cosine(a,c)->b相较于c和a更相似,是可以用的。使用auc作为评价的标准。
    • 短文本(新闻标题)语义相似度任务用先进的word embedding(英文 fasttext/glove, 中文tencent embedding) mean pooling后的效果就已经不错;而对于长文本用simhash这种纯词频统计的完全语言模型的简单方法也OK
    • bert pretrain模型直接拿来用作sentence embedding效果不如word embedding, cls的embedding效果最差(也就是pooled output)。把所有普通token embedding做pooling勉强能用
    • 用siamese的方式训练bert,上层通过cosine做判别,能够让bert学习到以中适用于cosine作为最终相似度判别的sentence embedding,效果优于word embedding. 但因为缺少sentence pair之间的特征交互,比原始bert sentence pair fine tune还是要差些
  • word2vec和NNLM对比有什么区别?
    • 其本质可以看做是语言模型;词向量不过是NNLM的一个产物,word2vec虽然其本质是语言模型,但是其专注于词向量本身,因此做了许多优化来提高计算效率;与NNLM相比,词向量直接sum,不在拼接,并舍弃隐层,考虑到softmax归一化需要遍历整个词汇表,采用hierarchical softmax 和negatice sampling进行优化,hierarchical softmax实质上生成一颗带权路径最小的哈夫曼树,让高频词搜索路径变小;negative sampling更为直接,实质上对每一个样本中每一个词都进行负例采样
  • Transformer如何并行化的?
    • Transformer的并行化我认为主要体现在self-attention模块,在Encoder端Transformer可以并干性处理整个序列,并得到整个输入序列经过Encoder端的输出,在self-attention模块,对某个序列x1,x2,x3…,self-attention模块可以直接计算xi,xj的点乘结果,而RNN系列的模型就必须按照顺序从x1计算到xn
  • glove和word2vec、LSA对比有什么区别?
    • glove vs LSA: LSA(Latent Semantic Analysis)可以基于co-occurance matrix 构建词向量,实质上是基于全局语料采进行矩阵分解,然而SVD计算复杂度高,glove可看做是对LSA一种优化的高效矩阵分解算法,采用Adagrad对最小平方损失进行优化
    • word2vec vs LAS:两个方法最大的差别是模型本身,LSA是一种基于概率图模型的生成式模型,其似然函数可以写为若干条件概率连乘的形式,其中包含需要推测的隐含变量(即主题);词嵌入模型一般表示为神经网络的形式,似然函数定义在网络的输出之上。需要学习网络的权重来得到单词的稠密向量表示。
    • word2vec vs glove: word2vec是局部语料库训练的,其特征提取是基于滑窗的
  • 如何对PTMs进行迁移学习?
    • 选择合适的与训练任务:语言模型是PTM是最为流行的预训练任务,同类的预训练任务有其自身的偏置,并且对不同的任务会产生不同的效果。例如,NSP任务可以使诸如问答(QA)和自然语言推论(NLI)之类的下游任务收益;选择合适的模型架构:例如BERT采用的MLM策略和Transformer-Encoder结构,导致其不适合直接处理生成任务;选择合适的数据集,下游任务的数据应该近似于PTMs的与训练任务,现在有很多现成的ptms可以方便地用于各种特定领域或特定语言的下游任务;选择合适的layers进行transfer:主要包括Embedding迁移、top layer迁移和all layer迁移。如word2vec和Glove可采用Embedding迁移,BERT可采用top layer迁移,Elmo可采用all layer迁移,BERT可采用top layer迁移,Elmo可采用all layer迁移。
      在这里插入图片描述在这里插入图片描述

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

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

相关文章

操作系统_多线程笔记(二)

文章目录1.线程状态2.多线程在的意义是什么?1.线程状态 状态是针对当前线程调度的情况来描述的,因为线程是系统调度的基本单位,所以状态是属于线程的属性 线程的六种状态: 注意: 1.一旦内核里的PCB消亡了,此时代码中创建的thread也就没有用了,即内核里的线程释放的时候无…

信号包络及其提取方法(Matlab)

信号包络及其提取方法 介绍信号包络,以及信号包络的提取方法。 一、信号包络 直观地从时域来讲,信号包络就是信号波形的轮廓。 本质上,信号包络是带通信号的基带部分。 一个实带通信号记为x(t),将它频谱的中心频点搬移到零频…

Win,M1Mac上安装jupyter的MATLAB支持插件的方法

tags: MATLAB Win Mac Tips 写在前面 11月的最后一天了, 总结一下支持MATLAB的一个jupyter的插件, 有了这个你就可以在jupyter notebook或者jupyter lab上面使用MATLAB语句了, 还是很不错的, 虽然我安装了好久… 下面来说一下我在我的电脑以及朋友的电脑(Win11)上面安装这个…

实例方法(instance method)、类方法、构造方法(三)

实例方法(没有static)的概念 对象被称为实例。实例相关的有:实例变量、实例方法。实例变量是对象变量。实例方法是对象方法。实例方法没有static。(对象方法,对象级别的方法) 实例方法的调用需要先new一个…

高维多元时序数据聚类

1. 简介 收集数据的能力不断增强,使我们有可能收集大量的异构数据。在可用的异构数据中,时间序列代表着尚未被充分探索的信息母体。当前的数据挖掘技术在分析时间序列时存在多个缺点,尤其是在应同时分析多个时间序列(即多维时间序…

JVM运行时数据 堆

JVM运行时数据 堆快速调试堆参数设置堆分类运行流程Minor GC、Major GC与Full GC分代思想内存分配策略TLAB堆空间参数设置快速调试 一个JVM实例只存在一个堆内存,对也是Java内存管理的核心区域Java 堆区在Jvm启动的时候创建,其空间大小也就确定了。是JV…

[附源码]计算机毕业设计springboot课室预约系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

NVIDIA 7th SkyHackathon(八)使用 Flask 与 Vue 开发 Web

1.页面效果 Web 采用 flaskvue 开发,效果图如下 2.后端 import sys import subprocess import os from PIL import Image from datetime import datetime from ASR_metrics import utils as metricsfrom werkzeug.wrappers import Request, Response from …

分层架构理论基础

一、三层架构 1、什么是三层架构 三层架构(3-tier architecture)通常意义上的三层架构就是将整个业务应用划分为:表示层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层…

数仓之hive自定义UDTF函数详解

学习目录一、自定义UDTF函数一、自定义UDTF函数 1.说明文档 A custom UDTF can be created by extending the GenericUDTF abstract class and then implementing the initialize, process, and possibly close methods. The initialize method is called by Hive to notify t…

本机使用python操作hdfs搭建及常见问题

一.虚拟机安装CentOS7并配置共享文件夹 二.CentOS 7 上hadoop伪分布式搭建全流程完整教程 三.本机使用python操作hdfs搭建及常见问题 四.mapreduce搭建 五.mapper-reducer编程搭建 本机使用python操作hdfs搭建及常见问题一、环境搭建1.打开虚拟机系统,打开hadoop2.修…

高效率开发Web安全扫描器之路(一)

一、背景 经常看到一些SRC和CNVD上厉害的大佬提交了很多的漏洞,一直好奇它们怎么能挖到这么多漏洞,开始还以为它们不上班除了睡觉就挖漏洞,后来有机会认识了一些大佬,发现它们大部分漏洞其实是通过工具挖掘的,比如说下…

安卓版微信8.0.31内测版出炉:安装包变小,功能变多!

人是社会性生物,建立依恋、经营亲密关系是人的本能,只不过到了网络时代之后,用户进行交流的方式几乎都变成了微信等社交软件。 不仅可以让用户很便捷的和朋友进行沟通,并且在上班办公的时候,也是可以轻松传输文件等&a…

MCUXpresso IDE下高度灵活的FreeMarker链接文件模板机制

一、准备工作 首先需要准备好环境,包含必要的软件,痞子衡的环境如下: 集成开发环境: MCUXpresso IDE_11.6.0_8187,点此下载软件开发包: SDK_2.12.1_EVK-MIMXRT1170(Toolchain需包含MCUXpresso I…

Compose学习-> Text()

设置文本:text xxx 直接设置 Text(text "我是一个Text")引用资源文件:stringResource Text(text stringResource(id R.string.string_text))设置字体颜色:color xxx 引用系统自带的颜色 Text(text "我是一个Text"…

【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)

typora-root-url: ./ 【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计(原理图仿真源代码实物图答辩论文答辩PPT) 文章目录typora-root-url: ./【毕业设计】17-基于单片机的矿井提升机_步进电机控制装置设计(原理图仿真源代码实…

C++习题2

指针调用数组元素 指针调用数组元素 int a[3][4] {{1,4,7,10},{2,5,8,11},{3,6,9,12}};int* pa[3] { a[0],a[1],a[2] };int(*pb)[4]; pb a;int** q pa;cout << *(a[2] 3)<<endl;cout << *(*(pa 2) 3)<<endl;cout << pb[2][3]<<en…

【JavaWeb】Filter

文章目录1.Filter过滤器2.Filter的初体验3.Filter的生命周期4.FilterConfig类5.FilterChain过滤器链6.Filter的拦截路径1.Filter过滤器 (1).概念及作用 Filter过滤器是JavaWeb的三大组件之一三大组件分别是:Servlet程序,Listener监听器,Filter过滤器Filter过滤器是JavaEE的规…

MBA管理类联考英语二题型答题时间及次序问题

还有不到一个月时间&#xff0c;2023年MBA联考也进入到最后的收官阶段&#xff0c;这个阶段对于多数已经系统复习过的考生&#xff0c;一般需要进行通盘梳理备考&#xff0c;而不是专注于单个模块的复习。在做试卷或真题的过程中&#xff0c;如何才能更有利于分数这个问题需要大…

闲人闲谈PS之三十五——物资备货与提前采购

惯例闲话&#xff1a;又一年快过去了&#xff0c;回想刚刚开始在CSDN上写笔记&#xff0c;还是2年前的事情。闲人其实是一个拖延症十分严重的人&#xff0c;自从开始走上写作这条路之后&#xff0c;治疗拖延症找到了办法&#xff0c;每天总有一些事情让闲人去思考&#xff0c;然…