# 2023年資訊科技產業專案設計課程作業 3
# [NVIDIA - AI Algorithms SW Engineer-New College Graduate](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/details/AI-Algorithms-SW-Engineer---New-College-Graduate_JR1973032?locationHierarchy1=2fcb99c455831013ea52ed162d4932c0&jobFamilyGroup=0c40f6bd1d8f10ae43ffaefd46dc7e78)
What we need to see:
* MS or PhD in Computer Science, Computer Engineering or Electrical Engineering or related field in Deep Learning, Machine Learning and Computer Vision.
* Algorithm development experience data analytics, especially with LLM’s and Multi-Modal Foundation models
* Experience working with deep learning frameworks like TensorFlow and pyTorch.
* Strong communication skills.
# [REALTEK - IT System Development Engineer](https://recruit.realtek.com/Job/JobDetail?jobid=1447)
Application Requirements:
* Bachelor or Master degree majoring in IT, CE, CS or related major.
* Familiar with C# or JAVA programming and SQL skill.
* Familiar with web application development.
* Experience with SCM and APS is a plus.
* Good accountability and communication.
# [REALTEK - AI Information Systems Design Engineer](https://recruit.realtek.com/Job/JobDetail?jobid=1855)
Application Requirements:
* Master's degree or above; preferably in an Information Technology related field
* Proficient in Python, HTML, CSS, PHP, Flask API, NLP, SQL
# [Mediatek-(Internship/Contract) AI Application Engineer](https://www.1111.com.tw/job/99007392/)
Application Requirements:
Work Experience:
Not required
Educational Requirements:
Bachelor’s or Master’s Degree
Field of Study:
Not specific
Computer Skills:
C/C++ and Python
Additional Requirements:
* This position requires experience in using AI-related packages for experiments, such as Pytorch, Tensorflow, Keras, Pytorch-Lightning, etc.
* Familiarity with Linux system operations is required for this position, along with experience in collaborative project development using git.
* It is preferable for this position to work more than 2 days a week.
* Outstanding students or fresh graduates with no experience are welcome to apply.
## 自身評估
[初版履歷](https://docs.google.com/document/d/12SuVYxCe6sW8fMeEDxRXn2On0rBlQVgLWiKG_VeWC_I/edit?usp=sharing)
具備AI相關背景:
* 透過類神經網路分析餐飲加盟店對總公司的訂貨資料,來判斷全台加盟店竄或情形,並預測下個月可能跑貨店家、讓總公司訂貨利潤達到最高及最低的訂貨店家。
* 撰寫PYTHON程式碼產生出一個Tai Chi資料集,並做出相關的AI training model。
* 用DL的方式,撰寫PYTHON程式碼來做類別分析
* Experience working with deep learning frameworks like TensorFlow
具備前端開發相關能力
* 利用HTML, CSS, Javascript做出pivot table用於異常值及anova分析的網站
其他符合職缺之特質:
* Proficient in Python, HTML, CSS, PHP, NLP, SQL
* Familiar with web application development.
* Strong communication skills
* Good accountability and communication.
缺乏 相關經驗及能力:
* 缺乏LLM’s and Multi-Modal Foundation models之經驗。
* 沒有Experience with SCM and APS。
## 模擬面試
:man_in_tuxedo: :interviewer
:boy: :interviewee
:man_in_tuxedo: :您好,歡迎參加今天的面試,請先簡單的介紹一下自己。
:boy: :您好,我是xxx,就讀於成功大學工業與資訊管理學系,在AI方面的主要研究領域是深度學習,目前在開發的專案是利用深度學習的方式辨識語音訊息之情緒定位,除此之外我也會利用空餘的時間補充深度學習這方面的知識和所涉及到的演算法,平常也會和不同領域的人才進行交流,以增進自身的跨領域合作和溝通能力。
:man_in_tuxedo: :好的,我大致上理解你的情況了,接下來想請問你一些技術相關的問題。
:boy: :沒問題。
:man_in_tuxedo: :DNN的模型出現Overfitting的話要如何判斷,有什麼方式可以改善這種情況。
:boy: :Overfitting就是說模型在訓練數據上表現良好,但在沒看過的數據上表現不佳,可以通過Drop out、L1或L2 Regularization、Cross-Validation和Batch Normalization等來改善。
:man_in_tuxedo: :你提到了Cross-Validation,請你解釋一下Cross-Validation是甚麼。
:boy: :Cross-Validation用在評估機器學習模型對未見數據的泛化能力。它通過將數據分割成多個小子集,然後進行多次訓練和驗證,以獲得對模型性能的更準確估計。其中k-fold cross Cross Validation最常見。方法是將數據集被均勻分割成K個子集。在每一輪中從這些子集中挑選一個作為validation set,其餘的k-1個子集用作training set。這個過程重複K次,每次都換一個不同的子集作為validation set。最後再從這K次的結果中計算出模型的平均性能。用Cross-Validation的好處是可以提高模型評估的準確性,因為通過多次測試,可以更準確地衡量模型的性能,尤其是在數據量較小的情況下。
也可以減少偏差,因為每個數據點都有機會被用作訓練和驗證,所以可以減少模型對特定數據分割的依賴。還可以促進模型的泛化能力,因為Cross-Validation有助於確保模型在各種不同數據子集上都有良好的表現。
:man_in_tuxedo: :好的了解,那請問你知道為什麼在DNN的最後一層的activation function通常都會用softmax嗎?
:boy: : 通常在DNN的最後一層的activation function會用softmax的原因是因為softmax可以將最後的output用機率的型態來表示,也就是說output中的每一個元素都會被轉換成一個0到1之間的數字,且所有數字的總和為1,這對於用cross-entropy當loss funtion的情況有很大的幫助,且Softmax與cross-entropy的loss funtion結合使用時,可以有效地進行梯度下降優化。這個組合讓網絡在訓練過程中能更快地調整參數,提高學習效率。還有就是Softmax的數學特性,Softmax是指數函數的延伸,它放大了輸出值之間的差距,所以即使是很接近的值,在經過Softmax處理後,差異也會變得更加明顯,可以更清楚地區分不同的類別。
:man_in_tuxedo: :ok,請你解釋skip connection和residual connection,以及如果使用這個兩個技術的話可以解決什麼問題?
:boy: :skip connection是指在神經網絡中直接將某一層的輸出跳過一些層次,直接連接到後面的layer上。這種結構允許數據在網絡更深層的位置直接利用前面層的信息,可以幫助網絡學習更有效的特徵表示,因為它讓網絡將低層特徵與高層特徵結合。
Residual Connection讓輸入不僅是直接跳躍到後面的layer,而且與後面layer的輸出相加。就是說較後面的layer學習的是輸入與輸出之間的殘差(即差異),而不是直接學習輸出。這可以讓網絡更容易學習identity mapping,有助於訓練更深的網絡。
這兩個技術可以避免梯度消失問題,用skip connection可以讓梯度直接流經網絡,避免深層網絡中梯度在多層傳播時逐漸消失的情況,Residual Connection的話可以允許梯度直接通過跳躍連接回流,改善梯度的傳播。
:man_in_tuxedo: :最後解釋一下gradient vanishing和gradient explosion,以及如何改善。
:boy: :梯度消失(Gradient Vanishing)是指在深度神經網絡的反向傳播過程中,靠近輸入層的梯度逐漸變得非常小,以至於無法有效更新這些層的權重。
改善方法:用ReLU當activattion function、使用權重初始化優化,像是He初始化或Xavier初始化、Batch Normalization、Residual Connections
梯度爆炸(Gradient Explosion)是指在神經網絡的反向傳播過程中,梯度變得異常大,導致權重更新過大,進而使網絡模型無法收斂。
改善方法:進行適當的權重初始化、Gradient Clipping、調整學習率、簡化網絡結構。
:man_in_tuxedo: :好的感謝您的時間,今天面試就到這邊結束。