# 目錄
* [ 1. 什么是機器學習](#1)
* [ 2. 什么神經網絡](#1)
* [ 3. tensorflow介紹](#2)
</br>
<h2 id="1">1. 什么是機器學習</h2>
利用**計算機**從**歷史數據**中找出**規律**,并把這些規律用到對**未來不確定場景的決策**。
+ 場景:
確定性場景 vs 不確定性場景
日升日落
下一個月的銷售額
+ 主角:計算機
避免由于人的經驗,知識水平的依賴
+ 歷史數據: 通常比較大,大于50條
+ 規律:
通過一系列機器學習的算法,找出一個數學函數,實現y=f(x)
數學函數通過計算機自動生成,而不是通過編程用類似if-else般的 實現
找規律,傳統的做法:從總體中抽取樣本,計算各種統計學指標,用來代表整體的指標。
問題: 不能真實的表現總體的情況,需要做驗證:->抽樣->描述統計->假設檢驗
大數據時代: 直接對全量的數據做處理。
**機器學習發展的原動力**
+ 從歷史數據中找出規律, 把這些規律用到對未來自動做出決定
+ 用數據代替export
+ 經濟驅動,數據變現
**典型應用**
1. 購物籃分析 : 尿不濕與啤酒, 亞馬遜購物
2. 聚類 : 精準營銷-用戶細分
3. 樸素貝葉斯: 垃圾郵件識別,貸款審核
4. CTR預估: 互聯網廣告,推薦系統-經常一起購買的商品
5. 自然語言處理
(1) 情感分析
(2) 實體識別: 內容提取
6. 圖片識別:(目前深度學習的主要應用方向)
7. 自動駕駛
8 語音識別,人臉識別,個性化醫療,手勢識別,虛擬助力,智能機器人,機器實時翻譯(谷歌翻譯)
</br>
**機器學習解決問題的框架**
確定目標 : 業務需求 -> 數據 -> 特征工程
訓練模型 : 定義模型 -> 定義損失函數 -> 優化算法
模型評估: 交叉驗證 -> 效果評估
(準確率,召回率 ……)
</br>
<h2 id="2">2. 什么是神經網絡</h2>
[參考鏈接](http://blog.csdn.net/zzwu/article/category/243067)
</br>
<h2 id="3">3. tensorlow介紹</h2>
2015年11月9日谷歌開源了人工智能系統TensorFlow,同時成為2015年最受關注的開源項目之一。TensorFlow的開源大大降低了深度學習在各個行業中的應用難度。TensorFlow的近期里程碑事件主要有:
2016年11月09日:TensorFlow開源一周年。
2016年09月27日:TensorFlow支持機器翻譯模型。
2016年08月30日:TensorFlow支持使用TF-Slim接口定義復雜模型。
2016年08月24日:TensorFlow支持自動學習生成文章摘要模型。
2016年06月29日:TensorFlow支持Wide & Deep Learning。
2016年06月27日:TensorFlow v0.9發布,改進了移動設備的支持。
2016年05月12日:發布SyntaxNet,最精確的自然語言處理模型。
2016年04月29日:DeepMind模型遷移到TensorFlow。
2016年04月14日:發布了分布式TensorFlow。
TensorFlow是一種基于圖計算的開源軟件庫,圖中節點表示數學運算,圖中的邊表示多維數組(Tensor)。TensorFlow是跨平臺的深度學習框架,支持CPU和GPU的運算,支持臺式機、服務器、移動平臺的計算,并從r0.12版本開始支持Windows平臺。
TensorFlow 是一個編程系統, 使用圖來表示計算任務. 圖中的節點被稱之為 op (operation 的縮寫). 一個 op 獲得 0 個或多個 Tensor, 執行計算, 產生 0 個或多個 Tensor. 每個 Tensor 是一個類型化的多維數組. 例如, 你可以將一小組圖像集表示為一個四維浮點數數組, 這四個維度分別是 [batch, height, width, channels].
一個 TensorFlow 圖描述了計算的過程. 為了進行計算, 圖必須在 會話 里被啟動. 會話 將圖的 op 分發到諸如 CPU 或 GPU 之類的 設備 上, 同時提供執行 op 的方法. 這些方法執行后, 將產生的 tensor 返回. 在 Python 語言中, 返回的 tensor 是 numpy ndarray 對象。
</br>
<h3 id="3.1">3.1 安裝</h3>
Tensorflow提供了各種安裝方式,包括Pip安裝,Virtualenv安裝,Anaconda安裝,docker安裝,源代碼安裝。
首先安裝 pip (或 Python3 的 pip3 ):
```
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
# Mac OS X
$ sudo easy_install pip
```
Linux系統下,使用Pip的安裝流程如下:
```
# Ubuntu/Linux 64-bit, CPU only, Python 2.7:
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7. Requires CUDA toolkit 7.5 and CuDNN v4.
# For other versions, see "Install from sources" below.
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
```
TensorFlow會安裝到/usr/lib/python2.7/site-packages/tensorflow目錄下。
</br>
MacOS
```
# Mac OS X, CPU only:
$ sudo easy_install --upgrade six
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl
```
</br>
<h3 id="3.2">3.2 常用API</h3>
使用 TensorFlow, 你必須明白 TensorFlow:
+ 使用圖 (`graph`) 來表示計算任務.
+ 在被稱之為 會話 (`Session`) 的上下文 (context) 中執行圖.
+ 使用 tensor 表示數據.
+ 通過 變量 (`Variable`) 維護狀態.
+ 使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數據.
tf.random_uniform([1], -1.0, 1.0):
構建一個tensor, 該tensor的shape為[1],該值符合[-1, 1)的均勻分布。其中[1]表示一維數組,里面包含1個元素。
tf.Variable(initial_value=None):
構建一個新變量,該變量會加入到TensorFlow框架中的圖集合中。
tf.zeros([1]):
構建一個tensor, 該tensor的shape為[1], 里面所有元素為0。
tf.square(x, name=None):
計算tensor的平方值。
tf.reduce_mean(input_tensor):
計算input_tensor中所有元素的均值。
tf.train.GradientDescentOptimizer(0.5):
構建一個梯度下降優化器,0.5為學習速率。學習率決定我們邁向(局部)最小值時每一步的步長,設置的太小,那么下降速度會很慢,設的太大可能出現直接越過最小值的現象。所以一般調到目標函數的值在減小而且速度適中的情況。
optimizer.minimize(loss):
構建一個優化算子操作。使用梯度下降法計算損失方程的最小值。loss為需要被優化的損失方程。
tf.initialize_all_variables() / tf.global_variables_initializer():
初始化所有TensorFlow的變量。
tf.Session():
創建一個TensorFlow的session,在該session種會運行TensorFlow的圖計算模型。
sess.run():
在session中執行圖模型的運算操作。如果參數為tensor時,可以用來求tensor的值。
<h2 id="99">附錄</h2>
1. [TensorFlow官方鏈接](https://www.tensorflow.org/)</br>
2. [極客學院:TensorFlow 官方文檔中文版](http://wiki.jikexueyuan.com/project/tensorflow-zh/)</br>
3. [官方GitHub倉庫](https://github.com/tensorflow/tensorflow)
4. [中文版 GitHub 倉庫](https://github.com/jikexueyuanwiki/tensorflow-zh)