誰もが深い学習アプリケーションを行うことができます:入門(on)

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

I.人工知能と新しい技術革命

2017年には、Goの世界でより重要なイベントがありました。マスター(アルファゴ)は60戦連続で世界を席巻し、世界チャンピオンを打ち負かしました。人工知能が人類の目の前に現れ、勢いを増しました。 一度「人間の知恵の要塞」と呼ばれるようになると、要塞は過去のものになっています。 AlphaGoは2016年3月にLi Shishiを破って以来、AIは完全に私たちのビジョンに入り、議論はさらに激しさを増しています。 10年以上にわたって、私たちは人生を大きく変えました。

実際には、身近な顔認識、音声認識などが可能であることに加えて、AIはかなり面白いことをすることができます。

たとえば、古代の詩をたくさん学んだ後、AIに古典詩を書かせて、非常に良質な古典詩を書くことができます。

または、新しいデザインの新しいスタイルを形成するために、異なるデザインの形状を持つ2つの車を組み合わせます。

また、友だちのサークルで見る前に、写真を対応する芸術的なスタイルの絵に変換してください。

現在、人工知能は、画像や音声など、多くの分野で技術の包括的なブレークスルーを作り出しています。 同時に、別の問題が続いています。もしこのAI波が本当に新しい技術革命を始めるならば、近い将来、私たちのインターネット全体が地球規模で変化し、私たちの人生。 次に、一般的なビジネス開発エンジニアとして、この時代の影響にどのような態度と対応を取りますか?

この質問に答える前に、コンピュータ情報技術を主導する技術革新の最後のラウンドを見てみましょう。過去30年間に中国語プログラマーの役割が変わりました。

プログラミングの技術は絶えず開発され、普及し始めています。当初から、科学者や専門家、学者のスキルは、徐々に公共のスキルに発展してきました。 言い換えれば、プログラミングとコンピュータの理解とアイデアをもって1980年にさかのぼる当社の多くのシニアエンジニアは、間違いなくその時代のコンピュータエキスパートです。

AIのこの波が本当に新しい技術革新を生み出すならば、それは同様の発展軌道に沿って徐々に発展し普遍化に向かっていくと我々は信じている。 この理解に基づいて、積極的な学習を通じて第1世代のAIエンジニアになるために努力することができます。

第二に、深い学習技術

AIのこのラウンドの技術的なブレークスルーは主に深い学習技術によるものであり、AIの開発の歴史と深い学習はここで繰り返されず、それ自体で相談することができます。 ここでは、ビジネス開発エンジニアの視点から誰もが理解できるように、深い学習の原則をできるだけ簡単に探求しようとしました。私の個人的なスキルレベルと熟練を条件として、完全に正確ではないかもしれません。

人間の知性とニューロン

人間の知能の最も重要な部分は脳です。脳は複雑ですが、その構成要素は比較的単純です。大脳皮質と神経系全体は神経細胞で構成されています。 樹状突起および軸索からなるニューロン細胞は、それぞれ、入力および出力を表す。 細胞膜に付着した分岐構造は樹状突起と呼ばれ、入力である。長い「尾」は軸索と呼ばれ、出力である。 ニューロンは電気信号および化学信号を出力し、最も重要なものは軸索細胞膜の表面に沿って移動する電気パルスである。 あらゆる種類の細部を無視して、ニューロンは、出力を生成するのに十分な入力を蓄積する比較的シンプルなデバイスです(興奮)。

樹状突起および軸索は両方とも多数の枝を有し、軸索の末端は通常他の細胞の樹状突起に連結され、接合部は「シナプス」と呼ばれる構造である。 ニューロンの出力は、シナプスを介して何千もの下流のニューロンに伝達され、ニューロンはシナプスの結合強度を調整することができ、シナプスによっては下流の細胞の興奮性を促進するものもあれば、阻害するものもある。 ニューロンには、入力を蓄積して出力を生成する数千の上流ニューロンがあります。

人間の脳には、1000億個のニューロンと1000億個のシナプスがあり、人間の脳には巨大な神経回路網が形成され、最終的な結果は人間の知能です。

2.人工ニューロンとニューラルネットワーク

ニューロンの構造は比較的単純なので、科学者はAIがそれから学ぶことができるかどうかについて考える。 ニューロンは刺激を受け取り、コンピュータの入力と出力に非常に似た応答を出力します。それは、テーラーメイドであり、関数でシミュレートできるように見えます。

ニューロンのメカニズムを借りて参照することにより、科学者は人工ニューロンと人工ニューラルネットワークをシミュレートしています。 もちろん、上記の抽象的な説明と図によって、誰もがそのメカニズムと原則を理解することはより困難です。 例えば、「住宅価格測定」を見てみましょう。

住宅の価格は、場所、向き、年齢、面積、銀行の金利などの多くの要素の影響を受けます。これらの要因が細分化されている場合は、数十があります。 一般に、深い学習モデルでは、結果に影響を及ぼすこれらの要因をフィーチャと呼びます。 最初に、価格に影響を及ぼす唯一のもの、家の面積などの極端なシナリオを想定しましょう。 そこで、50平方メートル、50万平方メートル、93平方メートルなどの一連のサンプルデータなど、関連するデータのバッチを収集します。これらのサンプルデータを座標に配置する場合は、次の図を参照してください。

次に、前にも述べたように、この入力(領域x)と出力(価格y)を「関数」に合わせようとします。つまり、これらの点を直線または曲線で「実践」したいだけです。 「一緒になって」

状況が極端であると仮定すると、これらの点は、以下に示すように、「直線」(実際の状況は通常は直線ではない)

関数f(x)= ax + bです。もちろん曲線であれば、多要素方程式が得られます。 f(x)= ax + bの関数を得た後、住宅価格の「予測」を行うことができます。たとえば、見たことのない81.5平方メートルの場合を計算することができます。

この新しいサンプルの場合、以下のように、対応する点(黄色の点)を直線で見つけることができます:

上記の大雑把な理解は、AIの一般的な操作です。 これはすべて単純すぎるようですね? もちろん、先ほどお話したように、住宅価格の影響は1つ以上の特徴があるため、数十もあるので、問題はより複雑です。次に、深い学習モデルのトレーニング方法を引き続き紹介します。 コンテンツのこの部分は比較的複雑です。ビジネスエンジニアの観点から、わかりやすく説明しようとしています。

3.深い学習モデルのためのトレーニング方法

一緒に価格に影響を与える数十の機能がある場合、それは当然、ロットやエリアなどの住宅価格に正の重みを持ち、家の年齢などの負の重みもあるなど、重量分布の問題があります。 。

(1)初期化ウエイト計算

だから最初のステップは実際にこれらの機能に重量値を追加することですが、最初にこれらの重量値が何であるか分かりません。 どうすればいいですか? どれくらいでも、最初にランダムな値を与えてください。 無作為に割り当てられた最終的に計算された推定住宅価格は正確ではありません。たとえば、100万の家を計算し、それを100,000と数えます。

(2)損失関数

モデルの評価と実際の評価との間のギャップは比較的大きいので、モデルの推定値と真の値との間の差の尺度である「不正確さ」の程度、すなわち損失関数を評価する測定役割を導入する必要がある。損失関数が小さければ小さいほど、モデルの推定値と実際の値の認識は小さくなり、基本的な目標はこの損失関数を減らすことです。 家の特徴のモデル推定値を100万の推定結果に近づけよう。

(3)モデル調整

勾配降下および逆伝播によって、重み付けパラメータは損失低減関数の方向に向かって計算される。 不適切なメタファーを置くために、エリアにある程度の重みを付けてから、家の向き(あるケースの特性の調整ではなく実際の計算方法)にいくらかの重みを減らしてから、損失関数が小さくなります。

(4)ループ反復

モデルの重みを調整した後、サンプルデータの新しいバッチを再作成し、前の手順を繰り返し、数十万回のトレーニングセッション後に、最終推定モデルの推定値が真の値の結果に近似します。私たちが望む "機能"です。

人々が理解しやすく直感的に理解できるように、使用される例は比較的粗く、深い学習モデルの学習プロセスが記述されており、詳細は省略されています。 原則を終えたら、デモを学び、構築する方法について話を始めます。

第三に、構築するための深い学習環境

2ヶ月前、人工知能は私にとっては大きなコンセプトでした。 しかし、暇な時に1ヶ月以上の勉強の後、私は何かを学び、いくつかのデモやアプリケーションを動かすことができた。

1.学習の準備

(1)数学的内容、高校数学、確率、線形代数および他の部分のレビュー。 (10時間累積して、キーポイントを拾い、それを見ましたが、実際にはそれだけでは不十分です。私は自分自身にその式を見せてもらえます)、比較的恥ずかしいほどです。

(2)Pythonの基本的な文法学習。 (GoogleのTensorFlowフレームワークの使用はPythonをベースにしているので、これまでにPythonを書いたことはありませんでした)

(3)GoogleのTensorFlowディープ学習のオープンソースフレームワーク。 (見るには10時間以上かかりました)

数学の基礎が優れていたり、早い段階で原理に注意を払わない学生は、個人の選択に応じて数学の部分を見ることなくそれを始めることができます。

2. GoogleのTensorFlowオープンソースの深い学習フレームワーク

深い学習の枠組みは、我々は大まかに "数学的機能"セットとAIのトレーニングの学習の実装フレームワークとして理解することができます。 AIモデルを使用することで、AIモデルをよりよく実行して維持することができます。

深い学習フレームワーク(Caffe、Torch、Theanoなど)はさまざまなバージョンがありますが、私はGoogleのTensorFlowにしか触れなかったので、残りのコンテンツはTensorFlowに基づいています。表示するには、公式のウェブサイトに直接行くことをお勧めします。 幸いなことに、TensorFlowは中国のコミュニティの長い歴史を持っていますが、内容は少し古いですが、建設環境にはいくつかの穴がありますが、既に中国の少数の文書の1つです。

TensorFlowの中国のコミュニティ

TensorFlowの英語コミュニティ

3. TensorFlow環境構築

主に関連する依存関係を解決するために、環境構築自体は複雑ではありません。 しかし、基本ライブラリの依存関係は多くの問題を引き起こす可能性があるため、1つのステップでできるだけ多くのことを推薦する方が簡単です。

(1)オペレーティングシステム

私が環境を構築するために使用するマシンは、Tencent Cloud上のマシンです。ソフトウェア環境は次のとおりです。

オペレーティングシステム:CentOS 7.2 64ビット(GCC 4.8.5)

このフレームワークはpython2.7とglibc 2.17に依存しているからです。 CentOSの古いバージョンは、一般的にはPython 2.6とglibcの下位バージョンであり、より基本的なベース依存関係が生じます。 さらに、Linuxの基礎となるライブラリであるglibcは全身であり、直接アップグレードすることはより複雑になり、環境上の異常を招く可能性があります。

(2)ソフトウェア環境

私が現在インストールしているPythonのバージョンはPython-2.7.5です。yum install pythonの方法で関連する元のソフトウェアをインストールすることをお勧めします。 その後、pythonでコンポーネントパッケージマネージャpipをインストールします.pipをインストールした後、他のソフトウェアのインストールは比較的簡単です。

たとえば、TensorFlowをインストールするには、次のコマンドを実行します(ライブラリ依存関係の問題を自動的に解決するのに役立ちます)。

pip install -U tensorflow

非常に古いバージョン(0.5.0)がインストールされるため、TensorFlowの中国語コミュニティのガイドラインに従わないように注意することが重要です。このバージョンで多くのデモを実行すると問題が発生します。 実際、上記で提供されるコマンドの現在のバージョンはテンソルフロー(1.0.0)です。

Python(2.7.5)でインストールする必要があるその他の主要コンポーネント:

深い学習画像のコアフレームワークであるTensorflow(0.12.1)、画像処理関連、いくつかの例ではPIL(1.1.7)、画像処理関連、いくつかの例が使用される

その後、もちろん他の依存コンポーネントもあります。pip listコマンドを使用してインストールしたPythonコンポーネントを表示できます:

Applet(1.4.0)backports.ssl-match-hostname(3.4.0.2)chardet(2.2.1)configobj(4.7.2)デコレータ(3.4.0)Django(1.10.4)funcsigs(1.0.2)イメージPIL(1.1)PIL(1.1.1)包装(16.8)pbr(1.10.0)包装(1.1.5) 7)ピロー(3.4.2)ピボット(9.0.1)protobuf(3.2.0)pycurl(7.19.0)pygobject(3.14.0)pygpgme(0.3)pyliblzma(0.5.3)pyparsing Augeas(0.5.0)python-dmidecode(3.10.13)pyudev(0.15)pyxattr(0.5.1)settools(34.2.0)6(1.10.0)slip(0.4.0)slip.dbus(0.4.0) Tensorflow(1.0.0)urlgrabber(3.10)wheel(0.29.0)yum-langpacks(0.4.2)yum-metadata-parser(1.1.4)

上記のようにシステムをセットアップすることで、多くの環境問題を回避できます。

環境を設定する過程で、私は多くの問題に遭遇しました。 たとえば、公式の例であるAttributeError: 'module'オブジェクトを実行する際のエラーは、 'gfile'属性がなく、インストールされたTensorFlowのバージョンが古いためgfileモジュールがないためです。 また、様々な種類があります。 (私が知っていることを私に尋ねないでください、私がもっと〜を言うと涙です)

より詳細なインストール手順: UbuntuにTensorFlowをインストールする

(3)TensorFlow環境試験運転

デモでは3Dデータが生成され、プレーンに収められています(公式サイトの例で使用されている初期化変数の機能は、initialize_all_variablesです。これはすでに新しいバージョンに入っています)。放棄された):

#!/usr/bin/python
#coding=utf-8
import tensorflow as tf
import numpy as np
# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# 构造一个线性模型
# 
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b
# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# 初始化变量,旧函数(initialize_all_variables)已经被废弃,替换为新函数
init = tf.global_variables_initializer()
# 启动图 (graph)
sess = tf.Session()
sess.run(init)
# 拟合平面
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)
# 得到最佳拟合结果 W: [[0.100  0.200]], b: [0.300]

操作の結果は、次のようになります。

200回のトレーニングの後、モデルのパラメータが徐々にベストフィット(W:[[0.100 0.200]]、b:[0.300])の結果に近づき、コードのスタイルからフレームワークを理解することもできます。サンプルトレーニングの基本的な動作モード。 公式チュートリアルのフォローアップにはますます複雑な例が含まれますが、全体としては類似したモデルです。

ステップ分割

データの準備:タグ付きサンプルデータの取得(ラベル付きトレーニングデータは教師あり学習と呼ばれます)。

モデルの設定:最初に、使用する必要のあるトレーニングモデルを作成します。選択する機械学習方法は数多くあります。つまり、数学関数のコレクションです。
損失関数および最適化方法:モデル計算結果と実際のラベル値との差を測定する。

実際の訓練操作:トレーニングの前にモデルを訓練し、ループトレーニングと学習を通してプログラムをさせ、最終的な結果「パラメータ」を得る。

検証結果:前のモデルがトレーニングしなかったテストセットデータを使用して、モデルの精度を検証します。

その中で、TensorFlowは通常、Pythonに基づいた効率的な数学的計算を実行するためにNumpy(外部の低レベル言語で実装されている)のようないくつかの基本関数ライブラリを使用しますが、特に外部のコンピューティングからPythonに至るまでのオーバーヘッドがあります。数十万回のトレーニングセッション。 したがって、Tensorflowは、1つの関数計算を別々に実行するのではなく、最初に一連のインタラクティブな計算操作を記述し、それらをすべて外部の一度だけ(他の機械学習ライブラリ、同様の実装で)提出します。

したがって、上記のフローチャートでは、青色部分のみが「計算操作フロー」を設定し、緑色部分は実際の操作のために下位のライブラリに実際にデータを提出し始め、各トレーニングは一般に一括してバッチでデータを実行します。 。

数学関連のコンテンツ:

高校と大学の数学
線形代数ビデオ


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ