使用三重損失網絡學習位置嵌入:讓位置數據也能進行算術運算

2020-12-05 機器之心Pro

選自Sentiance

機器之心編譯

參與:Panda

數據科學公司 Sentiance 近日刊文介紹了新機器學習算法平臺,該平臺能以自監督的方式學習位置數據並從中提取見解。機器之心對該文章進行了編譯介紹。

引言

我們 Sentiance 開發了一款能接收加速度計、陀螺儀和位置信息等智慧型手機傳感器數據並從中提取出行為見解的平臺。我們的人工智慧平臺能學習用戶的模式,並能預測和解釋事情發生的原因和時間,這讓我們的客戶能夠在正確的時間以合適的方式指導他們的用戶。

場地映射算法(venue mapping algorithm)是我們的平臺的一個重要組件。場地映射算法的目標是根據來自智慧型手機位置子系統的往往不準確的位置測量數據,搞清楚你將要到達的場地。

圖 1:左圖:場地映射的意思是估計用戶實際正在前往的臨近場地;右圖:人類直覺能幫助我們快速排除不太可能的場地,比如一位用戶正去往海灘時不太可能去救生站。

儘管場地映射總體上是一大難題,而且也是我們未來一篇博客文章的主要內容,但基於該地區周圍地理情況的人類直覺卻能輕鬆簡單地處理。如圖 1 所示,假設一位用戶正前往聖莫尼卡海灘。只需看一眼周圍的地理情況,我們就知道該用戶實際正前往求生站的概率可能相當小。

事實上,只需要看一眼這個區域的地圖,人類往往就能快速排除不太可能的場地並構建一個實際情況的預先信念。這個場地位於工業區、公園、靠近海灘、市中心還是公路旁邊?

為了讓我們的場地映射算法具備同樣的直覺意識,我們開發了一種基於深度學習的解決方案,其可訓練用於編碼地理空間關係和描述位置周圍情況的語義相似度的模型。圖 2 是這一概念的圖示。

圖 2:給定位置周圍的區域會被柵格化(rasterized),然後被傳遞給一個深度神經網絡。這個網絡用作編碼器,輸出一個能獲取輸入位置的高層語義的嵌入。

編碼器會將位置轉換成分布式的表徵,這類似於 Word2Vec [1] 對自然語言所做的工作。這些嵌入位於一個度量空間中,因此遵循代數規則。比如,我們可以使用詞嵌入推理詞的相似度和類比關係。我們甚至可以直接在嵌入空間中執行「國王-男人+女人=女王」這樣的算術運算。

在接下來的幾段中,我們將會討論我們如何設計了一種解決方案,可學習將位置坐標映射到度量空間中,這讓我們可以執行一些類似於詞嵌入的操作,如圖 3 所示。

圖 3:我們提出的解決方案可直接優化度量空間,這樣就能使用基本的算術運算探索該嵌入空間了。

圖像瓦片生成

柵格化 GIS 數據

給定一個位置坐標和一個半徑,我們可以查詢我們的 GIS 資料庫以獲取大量地理信息。我們的 GIS 資料庫是一個存儲在一個 PostGis 資料庫中的 OpenStreetMap 的本地副本。PostGis 是一個很方便的 PostgreSQL 擴展,增加了對空間運算符、類型和索引的支持。

比如,我們可以使用一組查詢輕鬆檢查一個定位附近是否有河流、這裡離最近的火車站有多遠,這個位置附近是否存在道路。此外,實際道路本身可以以折線的形式被提取出來,同時火車站建築的外形輪廓可被提取成一個多邊形對象。

但是,我們不清楚如何將這樣大量的非結構化數據有效地提供給神經網絡進一步處理。考慮到我們訓練神經網絡的目標是理解距離、包含、遮擋和相離等形狀和空間關係,所以我們決定在將位置的周邊情況送入編碼器之前首先將其柵格化處理成固定尺寸的圖像。

幸運的是,我們正好有能做到這一點的有效工具。我們將 Mapnik 及其 Python 捆綁包與一個定製版本的 OpenStreetmap-Carto 樣式表組合到了一起,得到了一個快速柵格化器(rasterizer),我們可以將其用於生成圖像瓦片(image tile),如圖 4 所示。

Mapnik:https://github.com/mapnik/mapnikOpenStreetmap-Carto:https://github.com/gravitystorm/openstreetmap-carto

圖 4:Mapnik 被用於將從 PostGis 取出的 GIS 數據柵格化處理成圖像

我們將我們的柵格化服務進行了參數化,以便在生成圖像瓦片之前輕鬆地通過旋轉和平移地圖來執行數據增強。如圖 5 所示,其中的圖像塊展示了同一個位置,只是有不同方向角和水平及垂直偏移值。

圖 5:我們的圖像瓦片生成器允許在生成圖像瓦片之前通過旋轉和平移地圖來輕鬆執行數據增強

從圖像到張量

儘管這些柵格化得到的圖像瓦片讓我們的編碼器可以輕鬆學習獲取空間結構和關係,但仍有大量信息在柵格化過程中丟失。事實上,柵格化會將道路、建築、公園輪廓、河流等所有的多邊形和折線段融合到一起。因為我們的 GIS 資料庫包含每個結構單獨的信息,所以讓神經網絡編碼器來學習分割它們實在就沒有必要了。

因此,我們不是將數據柵格化成三通道的 RGB 圖像,而是如上圖所示對該柵格化器進行了修改,讓其生成一個 12 通道的張量,其中每個通道都包含了一種不同類型的柵格化後的信息。圖 6 展示了這樣一個 12 通道的張量,其坐標與圖 5 的一樣。

圖 6:一個 12 通道張量被用於表示該區域。每個通道都包含一種特定信息,比如道路網絡、土地(包含綠地、水域等)、便利設施等

為便於人眼觀察,本文的後續內容基本都展示 RGB 柵格化版本,而非 12 通道的張量。

表徵學習

空間相似度

我們的目標是學習一個度量空間,其中語義相似的圖像塊對應於該空間中互相接近的嵌入向量。然後問題就變成了如何定義「語義相似」。

一種簡單直接的獲取相似度空間的方法是使用直方圖表示每個圖像塊,使用 k-均值聚類,再使用一個詞袋模型建模該空間。但是,我們仍然不清楚每個通道應該具有怎樣的權重。比如,如果道路相似,但建築不相似,那麼兩個圖像塊是否語義相似?

此外,即使兩個圖像塊有相似的直方圖,這也不能為我們提供任何有關該位置周邊情況的空間結構信息。假設一個圖像塊中一半都被海洋覆蓋,那麼這個圖像塊是否與包含大量小池塘、湖泊或噴泉的圖像塊語義相似?圖 7 給出了兩個能得到幾乎完全一樣的直方圖的圖像塊:

圖 7:基於直方圖的聚類不足以得到語義相似度和空間關係。這兩張圖像有幾乎完全一樣的直方圖,但它們的語義含義差別相當大。

但是,這些圖像塊的語義並不一樣。第一個圖像塊是一個交叉路口區域,第二個圖像塊則是某些可能通向居民房屋的小型道路。實際上在我們的嵌入空間中,我們發現這兩個圖像塊的嵌入之間的歐幾裡德距離其實相當大,即使它們的直方圖之間的卡方距離(Chi-Square distance)接近於零。

除了使用直方圖,每個通道都可以通過一組特徵來歸納總結以獲取空間關係,比如有向梯度直方圖(HoG)或者更傳統的 SIFT 或 SURF 描述符。但是,我們沒有試圖人工指定哪些特徵定義了語義相似度,我們決定使用深度學習的力量來學習自動檢測有意義的特徵。

為了做到這一點,我們將這種 12 通道張量輸入到了一個用作我們的編碼器的卷積神經網絡中。該網絡使用一個三重損失函數(triplet loss function)以自監督的形式進行訓練,這意味著在訓練過程中無需人工標註的數據。

自監督學習:三重網絡

三重損失概念的靈感源自孿生網絡(siamese network)架構,這是 Ailon et al. [2] 為無監督特徵學習執行深度度量學習而提出的一種方法。

三重網絡是一種使用三元組 進行訓練的神經網絡架構,其中包括:

一個錨實例 x一個與 x 語義近似的正實例 x+一個與 x 語義不同的負實例 x-

然後訓練該網絡,使其學習一個嵌入函數 f(.),使得,從而直接優化度量空間。如圖 8 所示。

圖 8:三重網絡是使用一個三重損失訓練的,這樣在學習到的度量空間中,相似的實例彼此更為接近,不相似的實例則相距更遠。

使用三重網絡的度量學習因谷歌的 FaceNet [3] 而變得更為流行,其中使用了三重損失來學習人臉圖像的嵌入空間,這樣相似人臉的嵌入就更為接近,不同人臉的嵌入則距離更遠。

對人臉識別而言,正例圖像是來自錨圖像中同一人的圖像,而負例圖像則是從 mini-batch 中隨機選擇的人的圖像。但是,我們這個案例卻沒有能輕鬆選擇正實例和負實例的分類。

為了定義語義相似度,我們可以使用託伯勒提出的「地理學第一定律」:「在地表空間中,所有事物是相互聯繫的,但是距離近的事物比距離遠的事物間的聯繫更密切。」

下面,設 I(.) 是從位置坐標到柵格化圖像塊的映射。對於位置 X,給定一個在柵格化圖像塊之前執行的旋轉和平移變換 T(.),再給定一個隨機位置 Y,且 X≠Y,那麼我們可以得到我們的三元組:

x=I(X)x^+=I(T(x))x^-=I(Y)

因此,我們假設兩個地理上鄰近且存在部分重疊的圖像塊在語義上比兩個完全不同的圖像塊更相關。圖 9 給出了兩個三元組示例,這兩個三元組的錨圖像是一樣的。

圖 9:由一張錨圖像、一張正例圖像和一張負例圖像構成的三元組

為了防止神經網絡只學習到簡單的變換,我們還在訓練過程中為每個正實例隨機啟動或禁用了 12 個通道中的某些通道。這會迫使網絡認為正例圖像塊與錨圖像是近似的,即使該信息的某個隨機子集是不同的(比如沒有建築、沒有道路等)。

SoftPN 三重損失函數

圖 10 展示了我們的三重網絡的一般結構。

圖 10:這個三重損失直接優化「錨嵌入和正例嵌入之間的距離」與「錨嵌入和負例嵌入之間的距離」的比

這個損失函數定義為,這樣優化網絡就對應於最小化向量 相比於向量 (0,1) 的均方誤差(MSE)。

我們為什麼這樣定義損失函數?考慮到我們希望 Δ(a,p) 儘可能地接近於零,同時我們又希望 Δ(a,n) 儘可能大。為了優化這個比值,我們在這兩個距離上都應用了一個 SoftMax,以得到這個域的有界相似度:

這種三重損失的定義往往被稱為 SoftMax 比,並且最早是由 Ailon et al. [2] 提出的。

這個定義的主要問題是網絡很容易快速學習到一個 d_ 接近於 1 的嵌入空間,這是因為大多數隨機負例圖像與錨圖像有非常大的差異。因此,大多數 (a,n) 對都對優化過程中的梯度作用不大,這會導致網絡很快停止學習。

有不同的方法可以解決這個問題,其中之一是高難負例挖掘(hard-negative mining)[3],即仔細選擇 (a,n) 對以確保網絡保持學習。但是,在我們的情況中,我們並不清楚如何有效選擇高難負例,同時又不向學習過程引入偏差。使用 Balntas et al [4] 提出的 SoftPN 三重損失函數是一種更簡單的解決方案。

這種 SoftPN 損失會使用 min(Δ(a,n),Δ(p,n)) 替代上述 SoftMax 計算中的 Δ(a,n)。其效果是,在優化過程中,該網絡會嘗試學習一個度量空間,其中錨嵌入和正例嵌入都離負例嵌入儘可能地遠。相對而言,原來的 SoftMax 比值損失僅考慮了錨嵌入和負例嵌入之間的距離。圖 11 展示了這兩者的差異。

圖 11:SoftPN 損失優化這個更困難問題的方式是最大化負例嵌入與錨嵌入和正例嵌入兩者之間的最小距離

神經網絡架構

我們使用了一個相當傳統的卷積神經網絡架構作為編碼器,其中包含 5 個過濾器大小為 3×3 的卷積層,之後是兩層 1D 卷積和一個密集連接層。使用一維卷積的目的是通過跨通道參數池化(cross-channel parametric pooling)[5] 降低通向網絡頂部的維度。

而嵌入層本身也是由另一個帶有線性激活函數的密集層構成的,這樣,經過其前一層的非線性之後,其輸出就不會一直被局限在正例域內。圖 12 給出了其完整的網絡架構。

圖 12:這個編碼器包含一個卷積神經網絡,後面跟著一個全連接層。最後的嵌入層是一個帶有線性激活函數的密集層

我們積極使用了 dropout 和批歸一化,並使用了 Leaky ReLU 激活函數以避免在初始測試運行中觀察到的 ReLU 死亡問題。

此外,我們還在輸入上直接應用了空間 dropout。這會導致一個隨機選出的輸入通道被完全丟棄,這能迫使網絡通過關注不同的通道來學習區分圖像。

完整網絡是用 Keras 實現的,僅包含 305 040 個參數,並且使用 Adam 優化器在 p3.2xlarge AWS 機器上訓練了兩周時間。

訓練數據

為了生成我們的訓練數據,我們在我們的平臺上取出了用戶去過的 100 萬個位置,並且添加了大約 50 萬個用戶在交通工具中的位置定位。

對於這 150 萬個位置,每一個我們都柵格化得到了一個尺寸為 128x128x12 的圖像瓦片,代表該位置周圍半徑 100 米的區域。這些張量用作錨圖像。

對於每個位置,我們還柵格化了 20 張隨機平移和旋轉的圖像瓦片,這些用作正例圖像。偏移量是在 0 到 80 米之間均勻採樣的,而且水平和垂直方向都有。這樣,每個位置會得到 20 對(錨圖像,正例圖像),總共就是 3000 萬張圖像。

三元組在網絡訓練過程中生成,同時生成 mini-batch。每個 mini-batch 包含 20 個位置。對於每個位置,我們隨機選出 5 對(錨圖像,正例圖像)來得到錨-正例距離的有意義表徵。負例圖像在每個 mini-batch 內隨機選擇,這樣每個 mini-batch 的大小即為 100。

在訓練過程中同時生成三元組 mini-batch 實際上就能得到近乎無限大的不同三元組數據集,這能讓網絡不斷學習很多個 epoch。

可視化過濾器和激活

因為這個嵌入空間是以一種自監督的方式學習到的,沒有標註數據,所以難以在訓練過程中監控網絡是否真正學到了什麼東西。

可視化網絡學習到的過濾器是一種不充分但仍然有用的方法。實際上,我們希望可視化最大化網絡中不同層的激活的輸入圖像。為了做到這一點,我們可以從一張隨機生成的圖像開始,並且將每個像素都看作是一個有待優化的參數。然後我們使用梯度上升更新圖像像素,這樣它就能最大化所選擇的層的輸出。

根據這個卷積層的平均輸出激活計算輸入圖像的梯度并迭代運行梯度上升幾次,就能得到突出該層中最相關的結構的圖像。

因為我們的輸入是一個 12 通道的張量,不是 RGB 圖像,所以我們只選擇其中 3 個有最高平均像素幅度的通道並將它們排列成 RGB 圖像。我們對每個通道應用了直方圖均衡化(histogram equalization),以進一步增強視覺細節。

圖 13 展示了網絡的一個底層的 32 個過濾器中每一個的結果。很顯然,這一層看起來關注的是道路和小塊結構等低級細節。

圖 13:網絡的底層學習的是檢測道路和小塊結構等低級細節

圖 14 可視化了一個更高層的 64 個過濾器。這些過濾器顯然會被更平滑且更複雜的結構激活,這說明網絡確實可能正在學習其輸入的一種分層的特徵分解。

圖 14:網絡的更上層往往能通過組合來自更低層的低級特徵而學習更複雜的結構

儘管這些可視化的用途不應被高估,但它們看起來很有意思,尤其是在很多研究迭代過程中時。比如,早期的版本很快就為我們指出了正確的方向,讓我們發現了我們網絡中的一堆死掉的 ReLU。後面我們通過用 Leaky ReLU 激活函數來替換而解決了這個問題。

探索度量空間

可視化嵌入

在調試網絡時,可視化網絡學習到的過濾器確實很有意思,但在評價所學習到的嵌入空間的質量方面用處不大。

為了搞清楚嵌入空間看起來如何,圖 15 展示了使用 PCA 將維度降至三維之後的嵌入空間。為便於理解,每一個位置嵌入都在圖中用其柵格化圖像瓦片表示。

圖 15:通過 PCA 得到的嵌入空間的 3D 圖

這清楚地表明,即使只有前三個主成分,也能得到大量相關信息。公園等綠色區域、公路和主幹道等不同道路類型、以及圖中右下角的城市中心等區域有明顯區別。

為了更清楚地展示這些局部結構,圖 16 給出了該嵌入空間的三維 t-SNE 動畫。

圖 16:通過 t-SNE 得到的嵌入空間的 3D 圖

儘管場地映射是這些嵌入的一大明顯用例,但它們也可被我們交通方式分類器使用。圖 17 展示了從我們的交通方式分類訓練集(https://goo.gl/VhwuwS)提取出的定位的嵌入的散點圖。在這個案例中,我們使用了線性判別分析(LDA:Linear Discriminant Analysis)將 16 維的嵌入空間投射成了 2 維。

圖 17:在乘坐交通工具期間收集的航路點的嵌入空間的 2D LDA

這張圖表明不同的交通模式通常出現在不同的地區。比如,我們的嵌入得到了有關火車軌道或電車站的信息。

為了展示被編碼的地理區域的差異有多大,我們使用 PCA 將這個 16 維嵌入降維到了 3 維,這在比例調整之後被直接用作了 RGB 顏色值,從而可將我們的測試數據集繪製到一張地圖上。圖 18 給出了結果,這是在英國倫敦。可以清楚地看到,市中心、公路、水域、旅遊區和居民區的編碼都不一樣。

圖 18:在英國倫敦隨機採樣的位置的嵌入。這裡的顏色是使用 PCA 將 16D 嵌入向量降維至 3D RGB 三元組而得到的。

我們也對英國伯明罕執行了類似的操作,可以看到伯明罕的郊區比倫敦更大,而倫敦周圍的區域包含多得多的建築。如圖 19 所示。

圖 19:在英國伯明罕隨機採樣的位置的嵌入。這裡的顏色是使用 PCA 將 16D 嵌入向量降維至 3D RGB 三元組而得到的。

在空間中隨機遊走

為了進一步檢查該嵌入空間的平滑性,我們可以從一個隨機種子點(seed point)開始執行隨機遊走。在每次跳躍時,我們都隨機選擇一個當前嵌入的 k-最近鄰並可視化對應的圖像塊。

圖 20 展示了幾個這種隨機遊走的結果。注意,大多數情況下,在該嵌入空間中的最近鄰在地理位置上都遠離彼此數百或數千公裡,但它們有很高的語義相似度。

圖 20:在該嵌入空間中的 6 次隨機遊走結果,每一次都從一個不同的種子點開始。

使用位置進行計算

儘管上述可視化結果表明所學習到的嵌入空間是平滑的且學會了獲取語義相似性,但它不能證明我們實際上學習到了一個歐幾裡德度量空間。在一個歐幾裡德度量空間中,我們應該可以在嵌入之間進行插值並執行基本的算術運算,同時得到有意義的結果。

圖 21 從左到右展示了在兩個嵌入之間的插值結果。在插值的每一步,所得到的嵌入都被映射到了其在我們的測試數據中的最近鄰嵌入;這裡展示了其對應的圖像瓦片。

圖 21:從一個嵌入(左)到另一個嵌入(右)的插值,其中展示了每個中間步驟的來自我們的測試數據的最近鄰圖像。

最後,圖 22 展示了我們對嵌入進行加減運算所得到的結果,同樣,這些圖像結果是來自測試數據的對應最近鄰圖像。

圖 22:使用嵌入進行計算,並將結果映射回我們測試數據中的最近鄰圖像

這些結果表明我們的嵌入空間表示的度量空間中的距離實際上具有含義以及基本算術規則

因為這個度量空間是以一種自監督的方式訓練的,所以可以使用大量無標註數據來強制網絡學習獲取有意義的關係。因此,使用這些嵌入作為我們後續分類器中的特徵向量,就對應於一種形式的遷移學習,這讓我們可以使用非常有限量的有標註數據訓練強大的分類器。

總結

在這篇文章中,我們展示了可以如何使用三重網絡來學習能獲取不同地理位置坐標之間的語義相似度的度量空間。

我們訓練了一個卷積神經網絡來學習提取定義這個語義相似度的特徵,並使用度量學習的方法得到了一個嵌入空間。

所得到的嵌入空間可被直接用於場地映射或交通方式分類等任務,並能通過遷移學習的方式幫助我們極大提升我們的分類器準確度和泛化能力。

此外,這些嵌入還能為我們的分類器增加一定的直覺,因此不正確的分類結果仍具有直覺意義。比如,場地映射器可以快速學習將白天和夜晚的活動與工業區、市中心、公園、火車站等特定區域聯繫起來。

如果你想了解有關我們平臺的更多信息並自己動手嘗試,可聯繫我們或下載我們的演示應用 Journeys:http://www.sentiance.com/demo

相關焦點

  • Python語言教程算術運算與算術表達式的介紹
    Python語言教程算術運算與算術表達式的介紹 Python語言教程在算術運算符與算術的表達方式是我們值得學習的知識。下面我們就來詳細的看看Python語言教程中的相關信息。
  • 數據分析實踐入門(四):數據運算
    一、算術運算算術運算就是基本的加減乘除,在Excel或Python中數值類型的任意兩列可以直接進行加、減、乘、除運算,而且是對應元素進行加、減、乘、除運算,Excel 中的算術運算比較簡單,這裡就不展開了,下面主要介紹Python中的算術運算。列相加的具體實現如下所示。兩列相減的具體實現如下所示。兩列相乘的具體實現如下所示。
  • 一鍵獲取新技能,玩轉NumPy數據操作
    數組的算術運算讓我們創建兩個NumPy數組,分別稱作data和ones:若要計算兩個數組的加法,只需簡單地敲入data + ones,就可以實現對應位置上的數據相加的操作(即每行數據進行相加),這種操作比循環讀取數組的方法代碼實現更加簡潔。
  • 基於NOR Flash的數據運算方法專利揭秘
    目前市面存在的基於CPU、GPU等的計算系統都是基於馮諾依曼結構,其運算與存儲部件是分離的,進行計算時,計算單元需要將數據從存儲單元中提取出來,處理完成後再寫回存儲單元,這種結構導致了密集數據計算時需要在存儲部件與計算部件傳輸大量數據,這就造成計算速度受到數據傳輸帶寬限制,同時引起功耗增加,限制了計算系統的性能提升。
  • 可視化介紹:NumPy和機器學習數據表示
    本文中蟲蟲將一圖像可視化方式介紹NumPy的主要方法,以及在ML數據模型中的數據表示,圖文並茂的方式系統對大家的學習有所幫助。數組創建數組數組的創建通常是通過使用`np.array()`,並將列表傳遞給它。如下圖:在創建時候NumPy也提供了很多方法幫我們初始化數組,這些方法包括:ones(),zeros()和random.random()。
  • 使用Python從頭開始實現深度學習庫
    為此,可能需要將核心實現單元隱藏在幾個抽象層後面,這使得難以理解深度學習庫所基於的基本底層原理。因此,本文的目的是提供有關深度學習庫構建塊的見解。我們首先了解一些深度學習的背景知識,以了解功能要求,然後使用NumPy在python中使用一個簡單而完整的庫,該庫能夠端到端訓練神經網絡模型(非常簡單的類型)。在此過程中,我們將學習深度學習框架的各個組成部分。該庫不到100行代碼,因此應該很容易遵循。
  • Bioinf | 生物醫學網絡中的圖嵌入:方法、應用與評價
    最新的圖嵌入方法已在社會學和信息網絡上得到成功應用,但是尚未在生物醫學網絡上進行全面系統的研究。而且他們通常專注於分解一階數據矩陣(例如,鄰接矩陣)。最近,研究人員專注於設計各種高階數據鄰接矩陣以保留圖結構,並提出各種基於MF的圖嵌入學習方法。例如,GraRep考慮了網絡的高階鄰近性,並設計了k階概率矩陣分解。
  • 今日Paper | 空間注意力網絡;深度信念網絡;GhostNet;位置預測等
    全面的視覺理解邀請檢測框架能夠在分析單個對象時能夠有效學習和利用對象之間額交互,這是人體物體交互 (Human-Object Interaction, HOI) 檢測任務的主要目標。本文提出了可視空間圖網絡 (Visual-Spatial-Graph Network, VSGNet) ,其從人體-物體數據對中提取視覺特徵,使用空間配置來完善特徵,並通過圖卷積建立對象之間的結構連接。
  • 發那科機器人應用-PR[ ]位置寄存器
    位置寄存器指令  位置寄存器指令,是進行位置寄存器的算術運算的指令。位置寄存器指令可進行代入、加算、減算處理,以與寄存器指令相同的方式記述。  位置寄存器,是用來存儲位置資料(x,y,z,w,p,r)的變量(有關位置寄存器)。標準情況下提供有 100 個位置寄存器。  注釋:  使用位置寄存器指令之前,通過「LOCK PREG」來鎖定位置寄存器。若沒有進行鎖定,動作可能會集中在一起。有關「LOCK PREG」指令,可參閱 9.6 位置寄存器先執行功能。
  • 人工智慧的下半場,一定少不了自監督學習
    想要得到好的性能,往往需要大量的數據標籤,但是手動收集數據的成本很高(例如,ImageNet),而且也很難對數據集進行擴展。考慮到無標籤數據(例如,免費的文本、網絡上所有的圖像)的數據量遠遠超過了數量有限的人為標記的數據集,如果不使用這些無標籤數據是一種極大的浪費。然而,無監督學習是很困難的,而且相較於監督式學習往往要低效得多。
  • 使用Keras和OpenCV創建人臉驗證系統
    但是,由於光線,位置或方向略有變化,圖像中的像素值也會發生巨大變化,因此該方法實際上效果不佳。那我們現在怎麼辦呢?這就是卷積神經網絡(俗稱CNN)發揮作用的地方。通過將每個圖像嵌入d維向量空間,此類網絡可以幫助我們更好地表示圖像。然後評估圖像嵌入的相似性。
  • 再見卷積神經網絡,使用Transformers創建計算機視覺模型
    在使用大量參數和使用大量數據進行訓練時,這些模型以更簡單的模型和更快的訓練速度,在圖像分類或目標檢測等任務中產生與SOTA相似或更好的結果。使用查詢和關鍵矩陣(Wq和Wk),它與內存中的像素(用m表示)中的所有其他嵌入相乘,生成一個分數,然後進行softmax並用作與矩陣Wv獲得的值向量之和的權重。將結果嵌入到原q嵌入中,得到最終結果。在該圖中,p表示添加到每個輸入嵌入的位置編碼。該編碼是由每個像素的坐標生成的。
  • 如何使用Numpy進行運算?
    一起學習,一起成長!numpy是python及其重要的計算包,那麼numpy是如何進行運算的,接下裡小編將具體進行介紹:1.Numpy數組運算Numpy數組運算(如根據布爾型數組進行過濾、標量乘法、應用數學函數等)都會保留索引和值之間的連結:如:@ In [7]: obj2[obj2>0]@ In [8]: obj2*2@ In [10]: np.exp(obj2)2.可使用部分字典參數的函數Series可被看成是索引值到數據值的一個映射
  • 數據處理利器Pandas在python中的基本數據操作
    對索引進行排序Series用sort_index()按索引排序,sort_values()按值排序;DataFrame也是用sort_index()和sort_values()。算術運算(+,-,*,/)DataFrame中的算術運算是df中對應位置的元素的算術運算,如果沒有共同的元素,則用NaN代替。此外,如果我們想設置默認的其他填充值,而非NaN的話,可以傳入填充值。
  • 從數據結構到算法:圖網絡方法初探
    網絡表示學習、圖嵌入的定義俗話說「巧婦難為無米之炊」,再強大的機器學習算法也需要數據進行支持。在同樣的數據集和任務上,由於特徵的不同,同一個算法的結果也可能會有天壤之別。由於特徵的選擇對結果的決定性作用,很多數據挖掘方面的研究工作把重心放到了針對特定的數據由人工設計出有價值的特徵上。
  • 吳恩達授課,斯坦福CS230深度學習課程資源開放
    你將在醫療、自動駕駛、手語識別、音樂生成和自然語言處理等領域中進行案例研究。你不僅能掌握理論,還能看到深度學習如何應用到產業中。我們將需要使用 Python 和 TensorFlow 來實現所有的項目,課程中也會教這一部分。完成這門課程後,你將能以創新的方式將深度學習應用到你的工作中。該課程是以翻轉課堂的形式教學的。
  • 在少量數據甚至無數據基礎下也能進行終身學習 |IJCAI2016傑出學生...
    這些任務間的關係一般是基於每個任務的訓練數據而進行評估的,對於從少量數據中快速學習每個連續任務為目標的終身學習來說,這個設定是效率低下的。為了減輕負擔,我們基於耦合詞典學習開發了一個終身強化學習方法,該耦合詞典學習將高階任務描述符合併到了任務間關係建模中。我們的結果表明,使用任務描述符能改善學習到的任務策略性能,既提供了我們方法有效的理論證明,又證明展示了在一系列動態控制問題上的進步。
  • 數據的表示和運算
    ALU是一種組合邏輯電路,因此實際使用ALU時,其輸入埠A和B必須與鎖存器相連,而且運算過程中鎖存器(多位觸發器)的內容是不變的,其輸出必須送至寄存器保存。ALU主要功能:ALU的功能不僅僅是執行算術(加、減、乘、除)和邏輯運算(與,或,非,異或)的部件,還具有先行進位邏輯。在並行加法器的並行進位鏈就是使用ALU。
  • CVPR 2020 | 商湯提出 Anchor-free 目標檢測新網絡
    2  動機  1、現有的基於關鍵點的目標檢測網絡(如CornerNet、CenterNet、ExtremeNet等)通過使用關聯嵌入向量進行物體關鍵點的匹配,然而關聯嵌入向量具有訓練難度大且容易混淆同類物體的缺點,這會造成許多錯誤的關鍵點匹配從而導致錯誤的檢測結果。
  • 掌握深度學習,數據不足也能進行圖像分類!
    1.使用2個由卷積層和最大池化層組成的卷積塊,將線性整流函數(Rectified LinearUnit, ReLU)作為卷積層的激活函數。2.最頂部使用flatten層,下面是分別由線性整流函數和S型函數作為激活函數的兩個完全連接層。3.使用Adam優化器,交叉熵(cross-entropy)作為損失函數。