要約
今回私が紹介するのは、Pythonを利用したAI技術を扱っている日本の企業、株式会社 Preferred Networks(PFN)です。
PFNは、幅広いAI領域での研究開発、製品・サービスの提供を行っています。
Pythonの他にも、深層学習フレームワークである「Chainer」の開発も手がけており、AI分野における日本のリーディングカンパニーの一つとなっています。
詳細内容
株式会社 Preferred Networks(PFN)は、人工知能技術を活用した製品・サービスの提供や、AI エンジニアの人材育成などを行っている日本の企業です。
同社は、深層学習フレームワーク「Chainer」の開発を手がけており、同フレームワークを活用した研究開発も進めているため、AI 分野におけるリーディングカンパニーの一つとして、国内外で高い知名度を誇っています。
PFNでは、幅広い AI 領域での研究開発を進めています。
例えば、PFNは自動運転技術において、リアルタイム処理による高速画像認識の技術や、自動車の走行状態予測技術などに取り組んでいます。
また、PFNはロボット技術においても、人との共存や安全性確保を目的とした、ロボットの自己位置推定や音声認識技術の研究開発に取り組んでいます。
ここで、PFNが活用している Python のライブラリを紹介します。
「Chainer」は、PFNが開発した深層学習フレームワークであり、Python での実装により、様々な深層学習モデルの開発や学習が可能となっています。
Chainerは視覚的で理解しやすい構造となっており、Pythonの文法と親和性が高いため、初心者にも扱いやすい点が特徴の一つです。
以下に、Chainer の簡単なコードを紹介します。
以下の例では、MNIST データセットを用いた手書き数字の認識タスクを行う、簡単なニューラルネットワークを定義しています。
“`python
import chainer
import chainer.functions as F
import chainer.links as L
from chainer import training
from chainer.training import extensions# モデルの定義
class MLP(chainer.Chain):
def __init__(self):
super(MLP, self).__init__()
with self.init_scope():
self.l1 = L.Linear(None, 1000) # 全結合層
self.l2 = L.Linear(None, 10) def __call__(self, x):
h1 = F.relu(self.l1(x))
y = self.l2(h1)
return y# データの読み込み
train, test = chainer.datasets.get_mnist()# Iteratorの定義
train_iter = chainer.iterators.SerialIterator(train, batch_size=100)
test_iter = chainer.iterators.SerialIterator(test, batch_size=100, repeat=False, shuffle=False)# モデル、オプティマイザ、アップデータ、トレーナーの定義
model = MLP()
optimizer = chainer.optimizers.Adam()
optimizer.setup(model)
updater = training.StandardUpdater(train_iter, optimizer)
trainer = training.Trainer(updater, (20, ‘epoch’), out=’result’)# 学習の実行
trainer.extend(extensions.Evaluator(test_iter, model))
trainer.extend(extensions.LogReport())
trainer.extend(extensions.PrintReport([‘epoch’, ‘main/accuracy’, ‘validation/main/accuracy’]))
trainer.extend(extensions.ProgressBar())
trainer.run()
“`このコードでは、Chainer でのモデル定義に必要な「Chain」というクラスを継承した「MLP」クラスを定義し、全結合層を2層持つニューラルネットワークを構築しています。
次に、MNIST データセットからデータを読み込み、学習に使用する Iterator を定義しています。
Iterator は、データセットからバッチサイズでデータを取り出し、取り出されたデータをニューラルネットワークに入力するための処理を担うものです。
また、学習に必要なオブジェクトを全て定義し、20 epoch 分の学習を行っています。
以上のように、PFN では、Python をベースとした Chainer を活用し、幅広い AI 領域での研究開発を積極的に進めています。
このように、PFN の研究開発やサービス提供に対して、Python をはじめとするオープンソーステクノロジーが不可欠であると言えます。
コメント