AI 深度學習面試題學習

1.神經網絡

1.1個激活函數的優缺點?

1.2什么ReLU用于神經網絡的激活函數?

1.在前向傳播和反向傳播過程中,ReLU相比于Sigmoid等激活函數計算量小
2.避免梯度消失問題。對于深層網絡,Sigmoid函數反向傳播時,很容易就會出現梯度消失問題(在Sigmoid接近飽和區時,變換太緩慢,導數趨于0這種情況會造成信息丟失),從而無法完成深層網絡的訓練。3.以緩解過擬合問題發生。Relu使一部分神經元的輸出為0這樣就造成了網絡的稀疏性,并且減少了參數的相互依存關系,緩解了過擬合問題的發生。

4.相比Sigmoid型函數,ReLU函數有助于隨機梯度下降方法收斂為什么需要激活功能?

激活函數是用來加入非線性因素的,因為線性模型的表達能力不夠。

1.3 梯度消失和梯度爆炸的解決方案?梯度爆炸引發的問題?

梯度消失:靠近輸出層的hidden layer 梯度大,參數更新快,所以很快就會收斂;而靠近輸入層的hidden layer 梯度小,參數更新慢,幾乎就和初始狀態一樣,隨機分布。

另一種解釋:當反向傳播進行很多層的時候,由于每一層都對前一層梯度乘以了一個小數,因此越往前

傳遞,梯度就會越小,訓練越慢。

梯度爆炸:前面layer的梯度通過訓練變大,而后面layer的梯度指數級增大

在深度多層感知機(MLP)網絡中,梯度爆炸會引起網絡不穩定,最好的結果是無法從訓練數據中學習,而最壞的結果是出現無法再更新的 NaN 權重值。

RNN中,梯度爆炸會導致網絡不穩定,無法利用訓練數據學習,最好的結果是網絡無法學習長的輸入序列數據

1.4何確定是否出現梯度爆炸?

模型不穩定,導致更新過程中的損失出現顯著變化;

訓練過程中模型梯度快速變大;

訓練過程中模型權重變成 NaN 值;

訓練過程中,每個節點和層的誤差梯度值持續超過 1.0

1.5經網絡中有哪些正則化技術?

L2正則化(Ridge;    L1正則化(Lasso;

權重衰減;                              丟棄法;

批量歸一化;                        數據增強

早停法

?

1.6量歸一化(BN) 如何實現?作用?

實現過程:        計算訓練階段mini_batch數量激活函數前結果的均值和方差,然后對其進行歸一化,最后對其進行縮放和平移。

作用:

                1.可以使用更高的學習率進行優化;

                2.移除或使用較低的 dropout

                3.降低L2權重衰減系數;

4.調整了數據的分布,不考慮激活函數,它讓每一層的輸出歸一化到了均值為0方差為1的分布,這保證了梯度的有效性,可以解決反向傳播過程中的梯度問題

1.7經網絡中權值共享的理解?

權值共享這個詞是由LeNet5 模型提出來的。以CNN為例,在對一張圖偏進行卷積的過程中,使用的是同一個卷積核的參數。

比如一個3×3×1的卷積核,這個卷積核內9個的參數被整張圖共享,而不會因為圖像內位置的不同而改變卷積核內的權系數。

通俗說:就是用一個卷積核不改變其內權系數的情況下卷積處理整張圖片。

1.8 fine-tuning(微調模型)的理解?為什么要修改最后幾層神經網絡權值?

使用預訓練模型的好處:在于利用訓練好的SOTA型權重去做特征提取,可以節省我們訓練模型和調參的時間。

理由:

1.CNN中更靠近底部的層(定義模型時先添加到模型中的層)編碼的是更加通用的可復用特征,而更靠近頂部的層(最后添加到模型中的層)編碼的是更專業化的特征。微調這些更專業化的特征更加有用,它更代表了新數據集上的有用特征。

2.訓練的參數越多,過擬合的風險越大。很多SOTA模型擁有超過千萬的參數,在一個不大的數據集上訓練這么多參數是有過擬合風險的,除非你的數據集像Imagenet那樣大。

1.9 什么是Dropout?為什么有用?它是如何工作的?

背景如果模型的參數太多數據量太小,則容易產生過擬合。為了解決過擬合,就同時訓練多個網絡。然后多個網絡取均值。費時

介紹Dropout可以防止過擬合,在前向傳播的時候,讓某個神經元的激活值以一定的概率 P停止工作,這樣可以使模型的泛化性更強。

Dropout效果跟bagging 效果類似(bagging是減少方差variance,而boosting是減少偏差bias)。加入dropout會使神經網絡訓練時間長,模型預測時不需要dropout,記得關掉。?
具體流程

i.隨機刪除(臨時)網絡中一定的隱藏神經元,輸入輸出保持不變,
ii.讓輸入通過修改后的網絡。然后把得到的損失同時修改后的網絡進行反向傳播。在未刪除的神經元上面進行參數更新

iii.重復該過程(恢復之前刪除掉的神經元,以一定概率刪除其他神經元。前向傳播、反向傳播更新參數)

1.10如何選擇dropout 的概率?

input dropout 概率推薦是 0.8 hidden layer 推薦是0.5

為什么dropout可以解決過擬合?

1.取平均的作用:

Dropout生了許多子結構之后的操作,父神經網絡有N節點,加入Dropout后可以看做在權值不變的情況下(參數共享)將模型數量擴增到指數級別

2.減少神經元之間復雜的共適應關系,迫使網絡去學習更加魯棒;Dropout 在訓練和測試的區別?

訓練時隨機刪除一些神經元,在測試模型時將所有的神經元加入。

1.11什么是AdamAdamSGD之間的主要區別是什么?

1.12一階優化和二階優化的方法有哪些?為什么不使用二階優化?

一階優化方法有:

SGD -> SGDM ->NAG -> AdaGrad -> AdaDelta / RMSProp(加速梯度下降) -> Adam -> Nadam二階優化

定義:對目標函數進行二階泰勒展開,也就是二階梯度優化方法

牛頓法 + BFGS
利用二階泰勒展開,即牛頓法需要計算Hessian矩陣的逆,計算量大,在深度學習中并不常用。因此一般使用的是一階梯度優化。

1.12為什么Momentum可以加速訓練?

動量其實累加了歷史梯度更新方向,所以在每次更新時,要是當前時刻的梯度與歷史時刻梯度方向相似,這種趨勢在當前時刻則會加強;要是不同,則當前時刻的梯度方向減弱。動量方法限制了梯度更新方向的隨機性,使其沿正確方向進行。

1.13什么時候使用AdamSGD?

Adam等自適應學習率算法對于稀疏數據具有優勢,且收斂速度很快;但精調參數的SGD+Momentum)往往能夠取得更好的最終結果Adam+SGD 組合策略:先用Adam快速下降,再用SGD調優

如果模型是非常稀疏的,那么優先考慮自適應學習率的算法;

模型設計實驗過程中,要快速驗證新模型的效果,用Adam進行快速實驗優化;在模型上線或者結果發布前,可以用精調的SGD進行模型的極致優化。

1.14 batch sizeepoch平衡

1.15 SGD每步做什么,為什么能online learning

online learning強調的是學習是實時的,流式的,每次訓練不用使用全部樣本,而是以之前訓練好的模型為基礎,每來一個樣本就更新一次模型,這種方法叫做OGDonline gradient descent,目的是快速地進行模型的更新,提升模型時效性。而SGD的思想正是在線學習的思想。

1.16學習率太大(太小)時會發生什么?如何設置學習率??

1.基于經驗的手動調整
的固定習率,310.50.10.050.010.0050.0001等,觀察迭代loss的變化關系,找到loss下降最快關系對應的學習率。

太小,收斂過程將變得十分緩慢;
太大,梯度可能會在最小值附近來回震蕩(loss爆炸),甚至可能無法收斂。

2. 基于策略的調整

fixed exponentialpolynomial

自適應動態調整。adadeltaadagradftrlmomentumrmspropsgd

Logit:對它取對數。

1.17神經網絡為什么不用擬牛頓法而是用梯度下降?

牛頓法原理:使用函數f(x)的泰勒級數的前面幾項來尋找方程f(x)= 0的根。

1.18 BNDropout在訓練和測試時的差別?

BN:
訓練時:是對每一個batch的訓練數據進行歸一化,也即是用每一批數據的均值和方差。

測試時:都是對單個樣本進行測試。這個時候的均值和方差是全部訓練數據的均值和方差,這兩個數值

是通過移動平均法求得。

當一個模型訓練完成之后,它的所有參數都確定了,包括均值和方差,gammabata

Dropout:有在訓練的時候才采用,是為了減少神經元對部分上層神經元的依賴,類似將多個不同網絡結構的模型集成起來,減少過擬合的風險。

1.19若網絡初始化為0的話有什么問題?

w初始化全為0,很可能直接導致模型失效,無法收斂

1.20 sigmoidsoftmax的區別?softmax的公式?

1.21改進的softmax失函數有哪些?

1.Large Margin Softmax Loss (L-Softmax)
加了一個margin,要保證大于某一個閾值。這樣可以盡量實現讓類間間距更大化,類內距離更小。

2.Center Loss
通過將特征和特征中心的距離和softmax loss一同作為損失函數,使得類內距離更小,有點L1L2正則化。

1.22深度學習調參有哪些技巧?

1.準備數據

1.1 保證有大量、高質量并且帶有干凈標簽的數據;

1.2 樣本要隨機化,防止大數據淹沒小數據;

1.3 樣本要做歸一化.

2.預處理0均值和1方差化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87542.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

遇到該問題:kex_exchange_identification: read: Connection reset`的解決辦法

kex_exchange_identification: read: Connection reset 是一個非常常見的 SSH 連接錯誤。它表明在 SSH 客戶端和服務器建立安全連接的初始階段(密鑰交換,Key Exchange),連接就被對方(服務器)強制關閉了。 …

(論文蒸餾)語言模型中的多模態思維鏈推理

(論文總結)語言模型中的多模態思維鏈推理 論文名稱研究背景動機主要貢獻研究細節兩階段框架實驗結果促進收斂性擺脫人工標注錯誤分析與未來前景 論文名稱 Multimodal Chain-of-Thought Reasoning in Language Models http://arxiv.org/abs/2302.00923 …

React Native 接入 eCharts

React Native 圖表接入指南 概述 本文檔詳細介紹了在React Native項目中接入ECharts圖表的完整步驟,包括依賴安裝、組件配置、數據獲取、圖表渲染等各個環節。 目錄 1. 環境準備2. 依賴安裝3. 圖表組件創建4. 數據獲取Hook5. 圖表配置6. 組件集成7. 國際化支持8…

基于C#的OPCServer應用開發,引用WtOPCSvr.dll

操作流程: 1.引入WtOPCSvr.dll文件 2.注冊服務:使用UpdateRegistry方法注冊,注意關閉應用時使用UnregisterServer取消注冊。 3.初始化服務:使用InitWTOPCsvr初始化 4.使用CreateTag方法,創建標簽 5.讀寫參數使用下面三…

Java類加載器getResource行為簡單分析

今天嘗試集成一個第三方SDK,在IDE里運行正常,放到服務器上卻遇到了NPE,反編譯一看,原來在這一行:String path Test.class.getClassLoader().getResource("").getPath(); // Test.class.getClassLoader().ge…

【CodeTop】每日練習 2025.7.4

Leetcode 1143. 最長公共子序列 動態規劃解決,比較當前位置目標和實際字符串的字母,再根據不同情況計算接下來的情形。 class Solution {public int longestCommonSubsequence(String text1, String text2) {char[] t1 text1.toCharArray();char[] t2…

ES6從入門到精通:Promise與異步

Promise 基礎概念Promise 是 JavaScript 中處理異步操作的一種對象,代表一個異步操作的最終完成或失敗及其結果值。它有三種狀態:Pending(進行中)、Fulfilled(已成功)、Rejected(已失敗&#xf…

數據結構:二維數組(2D Arrays)

目錄 什么是二維數組? 二維數組的聲明方式 方式 1:靜態二維數組 方式 2:數組指針數組(數組中存放的是指針) 方式 3:雙指針 二級堆分配 💡 補充建議 如何用“第一性原理”去推導出 C 中…

HAProxy 和 Nginx的區別

HAProxy 和 Nginx 都是優秀的負載均衡工具,但它們在設計目標、適用場景和功能特性上有顯著區別。以下是兩者的詳細對比:1. 核心定位特性HAProxyNginx主要角色專業的負載均衡器/代理Web 服務器 反向代理/負載均衡設計初衷高性能流量分發高并發 HTTP 服務…

基于Java+SpringBoot的健身房管理系統

源碼編號:S586源碼名稱:基于SpringBoot的健身房管理系統用戶類型:多角色,用戶、教練、管理員數據庫表數量:13 張表主要技術:Java、Vue、ElementUl 、SpringBoot、Maven運行環境:Windows/Mac、JD…

【MySQL安裝-yum/手動安裝,卸載,問題排查處理完整文檔(linux)】

一.使用Yum倉庫自動安裝 步驟1:添加MySQL Yum倉庫 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm步驟2:安裝MySQL服務器 sudo yum install mysql-server -y步驟3:啟動并設置開機自啟 sudo systemctl start mysqld sudo systemct…

自定義線程池-實現任務0丟失的處理策略

設計一個線程池,要求如下:隊列最大容量為10(內存隊列)。當隊列滿了之后,拒絕策略將新的任務寫入數據庫。從隊列中取任務時,若該隊列為空,能夠從數據庫中加載之前被拒絕的任務模擬數據庫 (TaskDa…

【NLP入門系列四】評論文本分類入門案例

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 博主簡介:努力學習的22級本科生一枚 🌟?;探索AI算法,C,go語言的世界;在迷茫中尋找光芒…

Ubuntu安裝ClickHouse

注:本文章的ubuntu的版本為:ubuntu-20.04.6-live-server-amd64。 Ubuntu(在線版) 更新軟件源 sudo apt-get update 安裝apt-transport-https 允許apt工具通過https協議下載軟件包。 sudo apt-get install apt-transport-htt…

C++26 下一代C++標準

C++26 將是繼 C++23 之后的下一個 C++ 標準。這個新標準對 C++ 進行了重大改進,很可能像 C++98、C++11 或 C++20 那樣具有劃時代的意義。 一:C++標準回顧 C++ 已經有 40 多年的歷史了。過去這些年里發生了什么?這里給出一個簡化版的答案,直到即將到來的 C++26。 1. C++9…

【MySQL】十六,MySQL窗口函數

在 MySQL 8.0 及以后版本中,窗口函數(Window Functions)為數據分析和處理提供了強大的工具。窗口函數允許在查詢結果集上執行計算,而不必使用子查詢或連接,這使得某些類型的計算更加高效和簡潔。 語法結構 function_…

微型氣象儀在城市環境的應用

微型氣象儀憑借其體積小、成本低、部署靈活、數據實時性強等特點,在城市環境中得到廣泛應用,能夠為城市規劃、環境管理、公共安全、居民生活等領域提供精細化氣象數據支持。一、核心應用場景1. 城市微氣候監測與優化熱島效應研究場景:在城市不…

【仿muduo庫實現并發服務器】eventloop模塊

仿muduo庫實現并發服務器一.eventloop模塊1.成員變量std::thread::id _thread_id;//線程IDPoller _poll;int _event_fd;std::vector<Function<Function>> _task;TimerWheel _timer_wheel2.EventLoop構造3.針對eventfd的操作4.針對poller的操作5.針對threadID的操作…

Redis 加鎖、解鎖

Redis 加鎖和解鎖的應用 上代碼 應用調用示例 RedisLockEntity lockEntityYlb RedisLockEntity.builder().lockKey(TradeConstants.HP_APP_AMOUNT_LOCK_PREFIX appUser.getAccount()).value(orderId).build();boolean isLockedYlb false;try {if (redisLock.tryLock(lockE…

在 Windows 上為 WSL 增加 root 賬號密碼并通過 Shell 工具連接

1. 為 WSL 設置 root 用戶密碼 在 Windows 上使用 WSL&#xff08;Windows Subsystem for Linux&#xff09;時&#xff0c;默認情況下并沒有啟用 root 賬號的密碼。為了通過 SSH 或其他工具以 root 身份連接到 WSL&#xff0c;我們需要為 root 用戶設置密碼。 設置 root 密碼步…