人工知能を始める、現実的な仕事の選び方は?

人工知能を始める、現実的な仕事の選び方は?

[[235638]]

人工知能は、誰もが「データ サイエンティスト」になるという、2、3 年前のビッグ データのトレンドと同じ罠に陥っています。

AI業界に参入するには具体的に何をする必要がありますか?

このトピックは、実際に私のこれまでのチャットで何度も言及されており、ここでももう一度述べたいと思います。業界で AI 技術を直接適用する人々は、アルゴリズム、エンジニアリング、データという 3 つの異なる役割に大別できます。

AI業界に参入するにはどうしたらいいのか、特定の分野のエンジニアになるにはどうしたらいいのか、ある分野で発展するにはどんな技術スタックが必要なのか、などを教える記事がGitChatをはじめ、さまざまなメディアにたくさん掲載されています。

XXXになる方法については話しません。まずはXXXになった後に何をするか、そのためにはどのような能力が必要かを考えてみましょう。これらの能力を身につけ、これらのことをした後、私たちはどのような方向に発展できるでしょうか?

つまり、この記事では、さまざまな役割を担うために必要な資質、日々の仕事の状況、キャリア開発の道筋などを直感的な視点から垣間見ていきます。

アルゴリズムを実行する

1.1 日々の仕事

誰もがアルゴリズムを作りたいと思っていますが、業界でアルゴリズムを作る意味は何でしょうか?

真のアルゴリズム エンジニア (一部の企業ではサイエンティストとも呼ばれます) の最も基本的な日常業務は、実際には、論文を読んでそれを実装することです。つまり、論文の記述が真実であり再現可能であるかどうかを確認し、さらにそれが自社の製品に適用できるかどうかを確認し、実際に適用して製品の品質を向上させることです。

1.2 必要な能力

私の日々の仕事は、まず他人の論文を読むことだからです。そのため、アルゴリズムエンジニアには英語の論文を素早く大量に読む能力が不可欠です。

アルゴリズムに興味のあるすべての学生が知っておくべき Web サイトがあります: https://arxiv.org - 複数の分野 (コンピューター サイエンスを含む) のトップ論文が多数掲載されています。

現在、多くの科学者、学者、研究者、博士課程の学生が、正式な学術雑誌や会議でまだ発表されていない論文を完成次第、ここで発表し、結果をできるだけ遅滞なく外部に広めています。

従来の正式なルートでは、論文が完成してから正式に出版されるまでに、最短で 3 ~ 4 か月、最長で 1 年半ほどの遅延が生じます。これは、一部の伝統的な科目ではほとんど受け入れられません。

しかし、現在世界で最もホットな話題であるコンピューターサイエンス、特に人工知能、機械学習、ディープラーニングの分野では、誰もが主導権を握るために時間と競争しており、数か月の遅れはまったく許容できません。

したがって、AI に関する学術文献については、arxiv.org が現在の集約場所となっています。

アルゴリズムをやりたい場合は、平均して週に 1 つの *** 論文を読む必要があります。

おそらくこれが、これまで私が見聞きしたアルゴリズム エンジニア全員が、名門大学の関連専攻で博士号を取得している理由でしょう。

数年にわたる集中的な学術研究トレーニングを経て、これらの博士課程の学生は、全体的な英語力が CET-4 未満であっても、難しい英語の論文を読むことができます。

1.3 「アルゴリズム能力」の自己評価

しかし、もちろん、修士号、学士号、その他の専攻を取得した人がアルゴリズムを開発できないということではありません。誰も知識を持って生まれるわけではないので、何かを知らない場合は学ぶことができます。

しかし、それを習得できるかどうかを知るために、3 ~ 5 年を費やす必要はなく、さまざまなトレーニングや有料の読書に数万ドルを費やす必要もありません。

これを検証する非常に簡単な方法があります。今すぐ https://arxiv.org にアクセスし、論文 (この論文など: Dynamic Routing Between Capsules) を見つけて、最初から最後まで読んでください。

今はわからなくても大丈夫です。少なくとも、理解せずに一語も聞き逃さずに最初から最後まで読んでみてください。わからない単語があったら辞書を引いてください。

これができないのであれば、思い切って「アルゴリズム」と決別すべきです。私たちは一緒になれない運命にあるのに、なぜそれに執着し続ける必要があるのでしょうか?

1.4 学問的および実践的な能力

もし、偶然に論文を読むのが好きなら、あるいは嫌いだとしても、論文を読まざるを得ないほど強い意志と集中力があるはずです。それではおめでとうございます。アルゴリズムのゲートへと続く最初の一歩を踏み出しました。

次のレベルは、論文を理解することです。

論文、専門的な論文を読むことになり、読む目的は実践を導くことなので、当然、論文を理解しなければなりません。論文を理解するには、少なくとも次の 3 つの能力が必要です。

1.4.1 振り返り学習能力

論文を読んでいると、理解できない名詞や用語がたくさん見つかり、それらが互いにどのように関連しているかがわかりません。何をするか?参考文献を読んだり、オンラインで検索したり、本で答えを探したり... つまり、あらゆるリソースと方法を使用して、不明瞭な概念の意味と関連性を明確にします。

この能力は学術研究において最も基本的な能力の一つであり、一般的に学術的背景を持つ人にとっては問題になりません。

もし今持っていないのであれば、積極的に培うこともできますが、まずは学術的な研究方法論を学ぶ必要があるかもしれません。

1.4.2 数学的能力

学習目的だけで古典の古論文を読む場合は、文中の図やグラフの意味を理解し、式の導出を最初から最後まで理解するだけで十分です(最初の式の物理的な意味と、導出後の最終形式の基本的性質)。

しかし、*** 論文を読むのは違います。新しいため、時間をかけてテストされておらず、誰もその正確性を事前に検証することはできません。

この場合、式を見るには導出を見る必要があります。そうでなければ、数学的な導出が間違っていて、実際には再現できないほど満足のいく結果が得られた場合、それは時間と労力の無駄ではないでしょうか?

現時点で数学のスキルが十分でなくても、まだ学ぶことはできます。しかし、後述するように、工学で必要なことを何でも学ぶという断片的な学習とは異なり、アルゴリズムを実行するには、数学を体系的に学ぶ必要があります。

微積分、線形代数、確率と統計は避けて通れません。この分野が不足している場合は、コンピュータサイエンス学部の学部数学コースから始める必要があります。個人的には北京師範大学の教科書をお勧めします。

エンジニアリングを行う

2.1 日々の仕事

アルゴリズムの革新や開発と比較すると、エンジニアリングははるかに現実的です。

この役割のより代表的なポジションは、機械学習エンジニア(または冗談でパラメータ調整エンジニアと呼ばれる)です。彼らは、他者が開発したフレームワークとツールを使用し、既存のアルゴリズムを実行し、ビジネス データをトレーニングして、実用的なモデルを取得します。

このプロセスでは、データの処理、機能の選択、パラメータの調整などの手段が必要になる場合がありますが、通常は従うべき証拠があり、自分で発明する必要はありません。

エンジニアリングを行う際にも論文を読まなければなりませんが、アルゴリズムの作業とは異なり、エンジニアリングを行う際に論文を読む一般的な目的は、新しい方法を試すことではなく、既知の効果的な方法を使用して実際の問題を解決することです。

このため、エンジニアリングに携わる人々は、しばしば「古い」論文、または比較的学術的な内容が低い(それほど難しくない)論文を読むことになります。

また、読む際は、問題の解決策を直接見つけることが主な目的なので、読み飛ばしても大丈夫です。

数式に関しては、始まりと終わりがわかれば十分です。論文を読む頻度や求められる学術的深度は、アルゴリズム開発の場合よりもはるかに低くなります。

もちろん、特定の分野のプログラマーである以上、専門分野で一定の深みに達することが必要です。

エンジニアリングでは、一般的に既成の技術フレームワークの使用が求められますが、アルゴリズムをブラックボックスとして利用するだけでは、有能な「パラメータ調整」エンジニアになれるわけではありません。

アルゴリズムをブラックボックスとして使用する場合の問題点は、ブラックボックスが問題を解決できるときは便利ですが、問題を解決できなくなったり、品質に一定の要件がある場合には、途方に暮れてしまうことです。

[[235639]]

機械学習はエンジニアリングにとってどの程度深いのでしょうか?

もちろん、特定の分野のプログラマーである以上、専門分野で一定の深みに達することが必要です。

エンジニアリングでは、一般的に既成の技術フレームワークの使用が求められますが、アルゴリズムをブラックボックスとして利用するだけでは、有能な「パラメータ調整」エンジニアになれるわけではありません。

アルゴリズムをブラックボックスとして使用する場合の問題点は、ブラックボックスが問題を解決できるときは便利ですが、問題を解決できなくなったり、品質に一定の要件がある場合には、途方に暮れてしまうことです。

データを実行する

ここで言うデータ作業とは、データのクリーニングや加工を意味するものではなく、エンジニアリング職の業務内容の一部にETLやデータ処理が含まれていることがわかります。ここでのデータはデータのラベル付けを指します。

3.1 ラベル付きデータの重要性

機械学習には教師なし学習もありますが、実用領域で直接的に効果があることが証明されているモデルは基本的に教師ありモデルです。

近年、ディープラーニングは多くのアプリケーションで大きな成功を収めています。画像、音声、NLP、自動翻訳、AlphaGo など、ディープラーニングの成功は、大量のラベル付きデータに依存します。

ML や DL(アルゴリズムとエンジニアリング)に取り組んでいるエンジニアであっても、あるいはそれ以上であっても、全員が 1 つの事実に同意しています。それは、現段階では、データはアルゴリズムよりもはるかに重要であるということです。

3.2 手動データラベル付けの必要性

データ注釈の日常的なタスク

簡単に言うと、データ注釈の日常的な作業は、さまざまな種類のデータ (テキスト、画像、ビデオ、オーディオなど) にラベルを付けることです。

【朗報】データラベリング作業に閾値はほとんどありません。一般的に、どんな専攻の大学卒業生でも、あるいはそれ以下の学歴でも、この仕事をすることができます。始めるのに機械学習やその他の分野の専門知識は必要ありません。

【悪いニュース】:そのような仕事は純粋に「汚くて疲れる」だけで、全然かっこよくないし、初任給も非常に低いです。

不適切な例えを使うと:

アルゴリズムを実行することは、ドラゴンを倒したり、武術の世界で剣を振るったり、空を飛んだりするようなものです。

エンジニアリングは、狩りをしたり、馬に乗って疾走したり、お酒を飲んだり、大声で歌ったりするようなものです。

データを扱うのは豚を育てるようなものです。毎日豚の餌ときれいな豚の糞を混ぜて、土や泥にまみれなければなりません。

ですから、これは誰でもできる仕事ではありますが、やりたいという人はほとんどいないのではないかと思います。

状況を理解し、地に足をつけて

最近では、AI業界に参入したい人が増えており、その増加はますます大きくなっていることがはっきりと感じられます。

なぜこれほど多くの人が AI 業界に参入したいのでしょうか?それは本当にコンピューターサイエンスの研究や人間の知能の拡大に対する情熱なのでしょうか?はっきり言って、ほとんどの人は高い給料のためにそれをやっています。

より高い収益を得るために人々が選択を行い、懸命に働くことはまったく正当なことです。重要なのは正しい道を見つけることです。

業界への参入を目指す人は多くいますが、市場の現在のニーズを真に認識し、さまざまなレベルの人材の位置付けを理解し、自分の現実に基づいて実現可能な道を見つけることができる人はごくわずかです。

誰もが「アルゴリズムを作る」ことを望んでいますが、これについては考えていません。大企業の研究機関は、一流の科学者のグループを雇用しており、その多くは10年または20年以上にわたって論文を読み、常にAIの最前線にいる上級研究者です。

以下はShuffleNetアルゴリズムの詳細な説明です。

アルゴリズムの詳細な説明:

ShuffleNet は、ディープ ネットワークでの計算量を削減することに関する Face++ の論文であり、モバイル デバイスで実行できるディープ ネットワークであると主張しています。この記事は、MobileNet、Xception、ResNeXt のアイデアが似ているため、これらと組み合わせることができます。畳み込みグループ演算は AlexNet の頃から利用可能でしたが、当時の主な目的はデュアル GPU でのモデルトレーニングの問題を解決することでした。 ResNeXt は、このグループ操作を借用して、元の ResNet を改良しました。 MobileNet は、従来の畳み込み演算の代わりに深さ方向に分離可能な畳み込みを使用するため、精度に影響を与えずに計算量を大幅に削減できます。詳細については、MobileNets - ディープラーニング モデルの高速化を参照してください。 Xception は、Inception v3 の構造を改善するために、主に深さ方向に分離可能な畳み込みを使用します。

この記事では、主にチャネル シャッフル、ポイント単位のグループ畳み込み、深さ方向の分離可能な畳み込みを使用して、元の ResNet ユニットを変更します。これらについては、順番に説明します。

チャネルシャッフルの考え方は、以下の図 1 に示されています。これはグループ演算から始まります。一般的な畳み込み演算では、たとえば、入力特徴マップの数は N で、畳み込み層内のフィルターの数は M です。次に、M 個のフィルターのそれぞれを N 個の特徴マップの特定の領域と畳み込み、畳み込み結果として合計する必要があります。グループ操作を導入し、グループを g に設定するとします。すると、N 個の入力特徴マップが g 個のグループに分割され、M 個のフィルタが g 個のグループに分割されます。次に、畳み込み操作を実行すると、最初のグループの M/g 個のフィルタのそれぞれが、最初のグループの N/g 個の入力特徴マップと畳み込まれ、結果が得られます。図 1 (a) に示すように、最初のグループまで、2 番目のグループについても同じことが行われます。異なる色は異なるグループを表します。画像には 3 つのグループがあります。この操作により、各フィルターが入力特徴マップ全体ではなく、グループの特徴マップと畳み込まれるため、計算量を大幅に削減できます。しかし、図 1 (a) の 2 つの畳み込み層の両方にグループ演算が含まれるように、複数のグループ演算が重ね合わされている場合は、明らかに境界効果が生じます。これは何を意味するのでしょうか。つまり、出力チャネルは入力チャネルのごく一部からのみ生成されます。これは絶対に実現不可能であり、学習される機能は非常に限られます。そこで、この問題を解決するためにチャネルシャッフルが発明されました。図 1 (b) を見てみましょう。GConv2 を実行する前に、入力特徴マップが分散されます。つまり、各グループがいくつかのサブグループに分割され、異なるグループのサブグループが GConv2 のグループの入力として使用されるため、GConv2 の各グループはすべての入力グループの特徴マップを畳み込むことができます。これは、図 1 (c) のチャネルシャッフルと同じ考え方です。

ポイントワイズ グループ畳み込みは、実際には 1*1 のグループ畳み込みカーネルを使用した畳み込みです。つまり、ポイントワイズ畳み込みは、1*1 の畳み込みカーネルを使用した畳み込みです。 ResNeXtでは主なグループ演算は3*3畳み込みに対して実行されますが、ShuffleNetでは1*1畳み込みに対してグループ演算を実行します。これは、1*1畳み込み演算の計算コストが無視できないと著者が考えているためです。図 2 (b) の最初の 1*1 畳み込みは、グループ畳み込みを表す GConv であることがわかります。図2(a)はResNetにおけるボトルネックユニットですが、元々の3*3 Convを3*3 DWConvに変更しています。著者のShuffleNetは主にこれをベースに改造しています。まず、元の 1*1 畳み込みをグループ付きの 1*1 畳み込みに置き換え、その後に、前に紹介したチャネル シャッフル操作を実行します。次に、深さ方向に分離可能な畳み込みを表す 3*3 DWConv があります。深さ方向分離畳み込みについては、MobileNet を参照してください。深さ方向分離畳み込みの概略図を以下に示します。図2(c)は平均プーリングを追加し、ストライドを2に設定しています。また、元のResnet***はAdd操作、つまり要素値の追加ですが、(c)ではconcat操作、つまりチャネルによるマージが使用され、googleNetのInception操作に似ています。

下の図は、深さ方向に分離可能な畳み込みの概略図で、実際には従来の畳み込み演算を 2 つのステップに分割しています。元の畳み込みが 3*3 であると仮定すると、深さ方向に分離可能な畳み込みでは、まず M 個の 3*3 畳み込みカーネルを使用して、入力の M 個の特徴マップを 1 対 1 で畳み込み、合計せずに M 個の結果を生成し、次に N 個の 1*1 畳み込みカーネルを使用して、以前に生成された M 個の結果を通常どおり畳み込み、合計して、最終的に N 個の結果を取得します。詳細については、別のブログ投稿「MobileNets - ディープラーニング モデルの高速化」を参照してください。

表 1 は ShuffleNet の構造です。基本的には ResNet と同じです。また、いくつかのステージに分かれています (ResNet には 4 つのステージがありますが、ここでは 3 つだけです)。そして、各ステージでは、ShuffleNet ユニットを使用して、ShuffleNet アルゴリズムの核となる元の Residual ブロッ​​クを置き換えます。この表は、複雑さを制限しながら、グループ数 (g) を変更することで出力チャネルの数を変更します。出力チャネルが多いほど、一般的にはより多くの特徴を抽出できます。

実験結果:

表 2 は、異なるグループ番号を持つ異なるサイズの ShuffleNet の分類精度の比較を示しています。 ShuffleNet s*は、ShuffleNet 1*のフィルターの数にsを掛けたものです。 Arch2 は、元のネットワーク構造のステージ 3 の 2 つのユニットを削除し、複雑さを維持しながら各機能マップを拡張することを意味します。表 2 から得られる重要な結論は、グループ数の線形増加が分類精度の線形増加につながらないということです。しかし、小規模ネットワークでは一般的にチャネル数が少ないため、ShuffleNet は小規模ネットワークに効果的であることがわかりました。コンピューティング リソースが限られているという前提の下で、ShuffleNet はより多くの特徴マップを使用できます。

表 3 はチャネル シャッフルの重要性を示しています。

表 4 は、いくつかの一般的な分類ネットワークの分類精度の比較です。表5はShuffleNetとMobileNetの比較ですが、効果はかなり良好です。

要約:

ShuffleNet の核心は、ポイント単位のグループ畳み込み、チャネル シャッフル、および深さ単位の分離可能な畳み込みを使用して、ResNet ブロックの対応するレイヤーを置き換え、ShuffleNet uint を形成することです。これにより、計算量を削減し、精度を向上させるという目的が達成されます。チャネル シャッフルは、複数のグループ畳み込みの重ね合わせによって生じる境界効果を解決します。ポイント単位のグループ畳み込みと深さ単位の分離可能な畳み込みは、主に計算量を削減します。

<<:  教室への人工知能の導入は論争を巻き起こしています。それは教育に役立つのでしょうか?境界はどこにあるのでしょうか?

>>:  CDNトラフィックを節約するBrotliアルゴリズムの詳細な説明

ブログ    
ブログ    
ブログ    

推薦する

機械学習のテストセットをスケールアップする方法

[[387235]]テスト セットのヒル クライミングは、トレーニング セットに影響を与えたり、予測...

コンピュータビジョンディープラーニングにおける8つのよくあるバグ

コンピューター ビジョンのディープラーニングでよくある 8 つのバグをまとめました。誰もが多かれ少な...

AIアルゴリズムの包囲とフードデリバリー業者の「ブレイクアウト」

システムに閉じ込められた配達員たちは反撃している。最近、海外のテクノロジーメディアWiredは、プラ...

AIの最下層に突入! NUSのYou Yang氏のチームは拡散モデルを使用してニューラルネットワークパラメータを構築したとLeCun氏は称賛した。

拡散モデルは新たな大きな応用をもたらしました——ソラが動画を生成するのと同じように、ニューラルネット...

...

...

機械学習チートシートを使用して難しい問題を解決します。できますか?

機械学習の初心者であっても、中級プログラマーであっても、この質問に戸惑うかもしれません。チートシート...

Llama 2を破り、GPT-3.5と競合するStability AIの新モデルがオープンソースの大規模モデルのリストでトップに

「たった30分の昼休みを取っただけで、私たちの分野はまた変わってしまったのか?」最新のオープンソース...

AI には明るい未来があります。これらの 5 つのことをうまく実行すれば、将来の市場で発言権を持つ可能性が高まります。

2021年の初め、AIの軌道は混乱していました。業界のスター企業から悪いニュースが続々と届き、上場...

多くの機械学習戦略が失敗する理由

クラウド コンピューティング サービス プロバイダーの Rackspace Technology が...

Java仮想マシンオブジェクトの生存判定とガベージコレクションアルゴリズム

[[323332]]この記事では主に、オブジェクトが生きているかどうかを判断する方法を説明し、Jav...

女の子があなたを好きかどうか知りたいですか?ハーバード大学の10代のAIがチャット記録に基づいて恋愛の確率を計算

[[279803]] △『小林さんちのメイドラゴン』よりこの記事はAI新メディアQuantum Bi...

クラウド コンピューティングの限界: エッジでの機械学習が必要な理由

機械学習には高い処理要件があり、通信コストがかかることから、最終的にはエッジ(スマートフォン)で動作...

Googleの検索アルゴリズムがユーザーをより深く理解する方法

Googleは現在、コア検索アルゴリズムに変更を加えており、検索結果の最大10分の1のランキングに影...

...