商湯智能座艙一面(社招)面試題7道|含解析
12本七月在線內(nèi)部電子書在文末,自取~
公眾號(hào)福利
??回復(fù)【100題】領(lǐng)取《名企AI面試100題》PDF
??回復(fù)【干貨資料】領(lǐng)取NLP、CV、ML等AI方向干貨資料
問題1、Transformer結(jié)構(gòu)和LSTM的區(qū)別和優(yōu)勢(shì),Transformer怎么體現(xiàn)時(shí)序信息
區(qū)別:
- Transformer是基于注意力機(jī)制(self-attention)的模型,通過同時(shí)處理整個(gè)序列的信息,而LSTM(長短時(shí)記憶網(wǎng)絡(luò))則是基于遞歸的循環(huán)神經(jīng)網(wǎng)絡(luò)。
- LSTM依賴于序列上的遞歸計(jì)算,而Transformer使用注意力機(jī)制進(jìn)行全局性的關(guān)聯(lián)。
優(yōu)勢(shì):
- Transformer并行計(jì)算更有效,因?yàn)槊總€(gè)位置的計(jì)算獨(dú)立于其他位置,而LSTM需要按順序計(jì)算。
- Transformer更易于訓(xùn)練,不容易出現(xiàn)梯度消失或爆炸的問題。
- Transformer能夠?qū)W習(xí)長距離依賴關(guān)系,而LSTM的這個(gè)能力在序列很長時(shí)受到限制。
時(shí)序信息:
- Transformer通過引入位置編碼(Positional Encoding)來處理時(shí)序信息。這是通過為輸入序列的每個(gè)位置添加一個(gè)特定的向量表示其在序列中的位置,從而使模型能夠感知到輸入的時(shí)序結(jié)構(gòu)。
Encoder:
- 輸入:序列的嵌入表示或者經(jīng)過了位置編碼的輸入。
- 輸出:對(duì)輸入序列的編碼表示。
- 結(jié)構(gòu):多頭自注意力層(Multi-Head Self-Attention)和前饋神經(jīng)網(wǎng)絡(luò)層(Feedforward Neural Network)的堆疊。
Decoder:
- 輸入:編碼器的輸出以及目標(biāo)序列的嵌入表示。
- 輸出:對(duì)目標(biāo)序列的解碼表示。
- 結(jié)構(gòu):多頭自注意力層、多頭編碼-解碼注意力層(Multi-Head Encoder-Decoder Attention)和前饋神經(jīng)網(wǎng)絡(luò)層的堆疊。
- BERT(Bidirectional Encoder Representations from Transformers)是一種預(yù)訓(xùn)練的自然語言處理模型,基于Transformer架構(gòu)。
- BERT的核心思想是通過在大規(guī)模語料庫上進(jìn)行無監(jiān)督訓(xùn)練,從而學(xué)習(xí)豐富的語言表示。
- BERT采用雙向(bidirectional)的注意力機(jī)制,能夠更好地理解上下文信息。
- 在預(yù)訓(xùn)練之后,BERT可以通過微調(diào)應(yīng)用于各種下游任務(wù),如文本分類、命名實(shí)體識(shí)別等。
作用:
- BatchNorm(批歸一化):在訓(xùn)練時(shí)通過歸一化每個(gè)小批次的輸入,加速訓(xùn)練并有正則化效果。
- LayerNorm(層歸一化):在每個(gè)層的輸入上進(jìn)行歸一化,通常應(yīng)用于逐層的歸一化處理。
區(qū)別:
- BatchNorm:對(duì)每個(gè)批次的數(shù)據(jù)進(jìn)行歸一化,考慮了批次內(nèi)的樣本間關(guān)系。
- LayerNorm:對(duì)每個(gè)樣本的所有特征進(jìn)行歸一化,獨(dú)立于批次。
- BatchNorm適用于全連接和卷積層,而LayerNorm更適用于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和Transformer等序列模型。
原因:
- BatchNorm:在圖像處理中,數(shù)據(jù)通常以批次的形式輸入,BatchNorm可以充分利用批次內(nèi)的數(shù)據(jù)分布進(jìn)行歸一化,有助于訓(xùn)練深層的視覺模型。
- LayerNorm:在自然語言處理中,序列數(shù)據(jù)(如語言)的長度可能會(huì)變化,而LayerNorm獨(dú)立于批次,更適用于處理變長序列,保持對(duì)每個(gè)樣本的歸一化一致性。
解題思路:
盡可能到達(dá)最遠(yuǎn)位置(貪心)。
如果能到達(dá)某個(gè)位置,那一定能到達(dá)它前面的所有位置。
方法:
初始化最遠(yuǎn)位置為 0,然后遍歷數(shù)組,如果當(dāng)前位置能到達(dá),并且當(dāng)前位置+跳數(shù)>最遠(yuǎn)位置,就更新最遠(yuǎn)位置。最后比較最遠(yuǎn)位置和數(shù)組長度。
時(shí)間復(fù)雜度 O(n),空間復(fù)雜度 O(1)。
代碼:
問題7、編程題:跳躍游戲2(leetcode45) 思路: 從前往后先找如果到達(dá)最后一步,那么前一步最早能落在那里,找到前一步后,再把該步的下標(biāo)當(dāng)作目標(biāo),直到目標(biāo)下標(biāo)為0。 代碼:class Solution:def canJump(self, nums) :max_i = 0 #初始化當(dāng)前能到達(dá)最遠(yuǎn)的位置for i, jump in enumerate(nums): #i為當(dāng)前位置,jump是當(dāng)前位置的跳數(shù)if max_i>=i and i+jump>max_i: #如果當(dāng)前位置能到達(dá),并且當(dāng)前位置+跳數(shù)>最遠(yuǎn)位置max_i = i+jump #更新最遠(yuǎn)能到達(dá)位置return max_i>=i
class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)aim = nt = 0while aim > 1:for i in range(aim):if i + nums[i] >= aim-1:aim = i +1t += 1breakreturn t
免費(fèi)送
↓以下12本書電子版免費(fèi)領(lǐng),直接送↓

掃碼回復(fù)【999】免費(fèi)領(lǐng)12本電子書
(或 找七月在線其他老師領(lǐng)取 )
點(diǎn)擊“ 閱讀原文 ”搶寵粉 福利 ~
評(píng)論
圖片
表情
