keras之父《python深度學習》筆記 第一章

2021-10-10 11:10:17 字數 3178 閱讀 1244

本書由 keras 之父、現任 google 人工智慧研究員的弗朗索瓦 · 肖萊(francois chollet)執筆,詳盡介紹了用 python 和 keras 進行深度學習的探索實踐,包括計算機視覺、自然語言處理、產生式模型等應用。書中包含30多個**示例,步驟講解詳細透徹。由於本書立足於人工智慧的可達性和大眾化,讀者無須具備機器學習相關背景知識即可展開閱讀。在學習完本書後,讀者將具備搭建自己的深度學習環境、建立影象識別模型、生成影象和文字等能力。本書前四章為基礎內容,後面五章為**實戰。

首先,在提到人工智慧時,我們需要明確定義所討論的內容。什麼是人工智慧、機器學習

與深度學習(見圖1-1)?這三者之間有什麼關係?

人工智慧誕生於20世紀50年代,簡潔的定義如下:努力將由人類完成的智力任務自動化。最開始的人工智慧是由程式設計師精心編寫足夠多的明確規則來處理知識,這一方法被稱為符號主義人工智慧。

符號主義人工智慧只能處理定義明確的邏輯問題,比如下西洋棋。但它難以解決複雜的、定義模糊的問題。比如影象分類、語音識別和語言翻譯。在這些領域,一種新的方法效果更好,這就是機器學習。

為了給出深度學習的定義並搞清楚深度學習與其他機器學習方法的區別,我們首先需要知

道機器學習演算法在做什麼。前面說過,給定包含預期結果的示例,機器學習將會發現執行一項

資料處理任務的規則。因此,我們需要以下三個要素來進行機器學習。

輸入資料點。例如,你的任務是語音識別,那麼這些資料點可能是記錄人們說話的聲音

檔案。如果你的任務是為影象新增標籤,那麼這些資料點可能是影象。

預期輸出的示例。對於語音識別任務來說,這些示例可能是人們根據聲音檔案整理生成

的文字。對於影象標記任務來說,預期輸出可能是「狗」「貓」之類的標籤。

衡量演算法效果好壞的方法。這一衡量方法是為了計算演算法的當前輸出與預期輸出的差距。

衡量結果是一種反饋訊號,用於調節演算法的工作方式。這個調節步驟就是我們所說的學習。

機器學習模型將輸入資料變換為有意義的輸出,這是乙個從已知的輸入和輸出示例中進行

「學習」的過程。因此,機器學習和深度學習的核心問題在於有意義地變換資料,換句話說,在

於學習輸入資料的有用表示(representation)——這種表示可以讓資料更接近預期輸出。在進一

步討論之前,我們需要先回答乙個問題:什麼是表示?這一概念的核心在於以一種不同的方式

來檢視資料(即表徵資料或將資料編碼)。例如,彩色影象可以編碼為rgb(紅- 綠- 藍)格

式或hsv(色相- 飽和度- 明度)格式,這是對相同資料的兩種不同表示。在處理某些任務時,

使用某種表示可能會很困難,但換用另一種表示就會變得很簡單。舉個例子,對於「選擇影象中所有紅色畫素」這個任務,使用rgb 格式會更簡單,而對於「降

低影象飽和度」這個任務,使用hsv 格式則更簡單。機器學習模型

都是為輸入資料尋找合適的表示——對資料進行變換,使其更適合

手頭的任務(比如分類任務)。

所有機器學習演算法都包括自動尋找這樣一種變換:這種變換可以根據任務將資料轉化為更加

有用的表示。這些操作可能是前面提到的座標變換,也可能是線性投影(可能會破壞資訊)、平移、

非線性操作(比如「選擇所有x>0 的點」),等等。機器學習演算法在尋找這些變換時通常沒有什麼

創造性,而僅僅是遍歷一組預先定義好的操作,這組操作叫作假設空間(hypothesis space)。

這就是機器學習的技術定義:在預先定義好的可能性空間中,利用反饋訊號的指引來尋找

輸入資料的有用表示。這個簡單的想法可以解決相當多的智慧型任務,從語音識別到自動駕駛都

能解決。

資料模型中包含多少層,這被稱為模型的深度。而深度學習,就是資料模型中有很多層。現代深度學習模型通常有幾十上百個連續層,而其他機器學習方法可能只學習幾層甚至一兩層資料表示。所以傳統機器學習也被稱為淺層學習。

在深度學習中,這些分層表示幾乎總是通過叫作神經網路(neural network)的模型來學習

得到的。神經網路的結構是逐層堆疊。神經網路這一術語來自於神經生物學,然而,雖然深度

學習的一些核心概念是從人們對大腦的理解中汲取部分靈感而形成的,但深度學習模型不是大

腦模型。沒有證據表明大腦的學習機制與現代深度學習模型所使用的相同。就我們的目的而言,深度學習是從資料中學習表示的一種數學框架。

深度學習演算法學到的表示是什麼樣的?我們來看乙個多層網路(見圖1-5)如何對數字影象

進行變換,以便識別影象中所包含的數字。

如圖1-6 所示,這個網路將數字影象轉換成與原始影象差別越來越大的表示,而其中關於

最終結果的資訊卻越來越豐富。你可以將深度網路看作多級資訊蒸餾操作:資訊穿過連續的過

濾器,其純度越來越高(即對任務的幫助越來越大)。

這就是深度學習的技術定義:學習資料表示的多級方法。這個想法很簡單,但事實證明,非常簡單的機制如果具有足夠大的規模,將會產生非常好的效果。

機器學習是解析輸入對映到目標的規則。而深度神經網路是通過很多層資料變換來得到輸入到目標的對映的,那麼這個過程中具體都有什麼呢,通過下面的例子可以看到這個過程。

神經網路對每層輸入的資料的具體操作是一系列引數,本質就是講輸入的資料用這一系列引數來做調整,使其一步步接近結果,這些引數也被稱為權重。學習的意思是給神經網路的所有層找到恰當的權重值,這些權重值能夠將輸入每個示例都與目標一一正確對應。但是通常的神經網路包含幾十上百層,可能包含海量的權重值,為海量的權重值尋找恰到數值是十分困難的。

在神經網路中,衡量神經網路真實結果值和**值直接的距離,是通過損失函式計算的。損失函式的輸入是**值與真是結果值,結果是損失值。通常情況下,損失值越**明效果越好。我們可能無法得到乙個**完全準確的神經網路,但是通過損失函式,我們可以尋找到**偏差最小的神經網路。

深度學習中,主要是調節權重值來減小損失函式。這種調節是通過反向傳播演算法來實現的,在深度學習中執行這個操作的叫做優化器。一開始神經網路的初始值是隨機生成的,通過優化器不斷調節權重值,通過足夠多的迭代之後,找到損失值最小的權重值,這就是深度學習的具體過程。

python 深度學習 keras之父

想要控制一件事物,首先需要能夠觀察它。機器學習發展歷程 概率建模 logistic回歸 樸素貝葉斯 早期神經網路 梯度下降 核方法 svm 隨機森林 決策樹和梯度提公升機 神經網路 kaggle 上主要有兩大方法 梯度提公升機和深度學習。梯度提公升機主要使用xgboost,深度學習主要使用keras...

Keras快速上手 基於Python的深度學習實戰

密碼 6666 keras快速上手 基於python的深度學習實戰 系統地講解了深度學習的基本知識 建模過程和應用,並以深度學習在推薦系統 影象識別 自然語言處理 文字生成和時間序列中的具體應用為案例,詳細介紹了從工具準備 資料獲取和處理到針對問題進行建模的整個過程和實踐經驗,是一本非常好的深度學習...

基於Python的Keras深度學習基礎

keras 的核心資料結構是 model,一種組織網路層的方式。最簡單的模型是 sequential 順 序模型,它是由多個網路層線性堆疊的棧。對於更複雜的結構,你應該使用 keras 函式式 api,它允許構建任意的神經網路圖。sequential 順序模型如下所示 from keras.mode...