BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Perceiver:複数の入力データ型向けの単一のニューラルネットワークモデル

Perceiver:複数の入力データ型向けの単一のニューラルネットワークモデル

原文(投稿日:2021/04/13)へのリンク

GoogleのDeepMind社は最近、Perceiverと呼ばれる最先端のディープラーニングモデルをリリースした。これは、人間の脳がマルチモーダルデータを認識するのと同じように、音声から画像までの複数の入力データを受信して処理するものである。

Perceiverは、複数の入力データ型、つまり点群、音声、画像を受信して分類できる。この目的のために、深層学習モデルは、入力データ型についての前提を置かないトランスフォーマー(別名、アテンション)に基づいている。

通常、トランスフォーマーを使用する際のボトルネックは、アルゴリズムに必要な2次の演算数である。たとえば、224ピクセル×224ピクセルの画像を処理すると、50,000を超える224の2乗の演算が発生する可能性がある。これは膨大な計算オーバーヘッドになる。この問題を分類するために、DeepMindの研究者は、トランスフォーマーでSelf-AttentionレイヤーをCross-Attentionレイヤーに置き換えたため、線形アルゴリズムが複雑になった。

出典: Perceiver:反復的なアテンションを伴う一般的な知覚


さらに、Cross-Attentionの計算に使用される入力データはバイト配列に変換される。これは、このモデルがデータ型に依存しないことを意味する。

このモデルの大きな進歩は、入力データ型についての前提を置かないことである。たとえば、既存の畳み込みニューラルネットワークは画像に対してのみ機能する。

出典: Perceiver:反復的なアテンションを伴う一般的な知覚

画像分類に対して、このモデルはImageNetで76.4%の最先端の精度を達成する(ResNetでは39.4%を達成)。

出典: Perceiver:反復的なアテンションを伴う一般的な知覚

Perceiverはソーシャルメディアで注目を集めた。YouTubeで数千回の視聴があり、Redditでのスレッドで議論があり、Twitterで議論が続いている。Redditスレッドに興味深いコメントがあり、この新しいモデルとの関連性を示している。

基本的な考え方は、私が理解しているように、トランスフォーマーを使用してMLPを再作成することにより、クロスドメインの一般性を実現することです。

  • 「ニューロン」と活性化はスカラーではなくベクトルである
  • 中間層の重みは動的であり、固定でない

学習されたベクトルの固定の集合にCross-Attentionを適用することにより、入力の次元数を減らすこともできます。かなりクールです。


さらに、Twitterスレッドには研究者の考察がある。

これは本当に素晴らしい取り組みです。コミュニティの実装もあります。
...github.com/lucidrains/per...
間違いなくこれで遊んでいるつもりです。ありがとう。

 

最後に、ディープラーニングコミュニティのメンバーによるPyTorchのオープンソース実装がある。これを使用するには、次のスニペットを使用できる。

import torch
from perceiver_pytorch import Perceiver

model = Perceiver(
    input_channels = 3,          # number of channels for each token of the input
    input_axis = 2,              # number of axis for input data (2 for images, 3 for video)
    num_freq_bands = 6,          # number of freq bands, with original value (2 * K + 1)
    max_freq = 10.,              # maximum frequency, hyperparameter depending on how fine the data is
    depth = 6,                   # depth of net
    num_latents = 256,           # number of latents, or induced set points, or centroids. different papers giving it different names
    latent_dim = 512,            # latent dimension
    cross_heads = 1,             # number of heads for cross attention. paper said 1
    latent_heads = 8,            # number of heads for latent self attention, 8
    cross_dim_head = 64,
    latent_dim_head = 64,
    num_classes = 1000,          # output number of classes
    attn_dropout = 0.,
    ff_dropout = 0.,
    weight_tie_layers = False    # whether to weight tie layers (optional, as indicated in the diagram)
)

img = torch.randn(1, 224, 224, 3) # 1 imagenet image, pixelized

model(img) # (1, 1000)


 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT