AIの歴史 第三次ブーム(ディープラーニング)
- 作成日: 2025-02-11
- 更新日: 2025-02-11
- カテゴリ: AIの歴史
第3次AIブーム

第3次AIブームではディープラーニングの躍進が代表的です。
この記事では第3次AIブームについて詳しく解説します。
- AIの歴史 第三次ブーム(ディープラーニング)
ディープラーニングとは?
ディープラーニングは機械学習の一種です。
機械学習は機械に学習をさせることを指す言葉で、学習には教師あり学習、教師なし学習、強化学習の3種類があります。
ディープラーニングは、人間の神経細胞をマネしたニューラルネットワークという技術がベースになっています。
これによってディープラーニングは人間の認識と似た過程で出力を行えます。
人間はそれが猫かどうか、という判断をするときに、対象の全体を見てから細部を判断したり、あるいはその逆の作業をしたりしながら階層的に結論を得ます。
ディープラーニングではこれに近い過程を行い結果を得ることができます。
ディープラーニングは闇の中?
ディープラーニングを聞いたことがある人は多いと思います。
しかし、その実際はわからない人も多いのではないのでしょうか?
かく言う私もその一人でした。
ではできるだけディープラーニングを簡単に言い表してみましょう。
以下の一言にまとめます。
- ディープラーニングは機械学習の1つで、ニューラルネットワークを使った学習方法である
うーん、どうでしょうか。
機械学習は機械に学習させること。
ニューラルネットワークは人間の神経細胞を真似した仕組み。
ということです。
おわかりいただけるでしょうか。
ブレークスルー
ディープラーニングのブレークスルー、つまり転換期となったものが3つあります。
それが以下の3つです。
- AlexNet
- コンピューティングパワーの向上(GPUの活用)
- ビッグデータの利用可能性の拡大
AlexNet
ディープラーニングが注目されたのは2012年の画像コンテストでのAlexNetの勝利でした。
このコンテストでは1400万枚以上の画像を含む大規模なデータセットを使い、1000カテゴリーの物体を認識するというものです。
コンテスト参加者はみんなそういったことをしなくてはいけません。
AlexNetは畳み込みニューラルネットワークを使っていました。
畳み込みニューラルネットワークはディープラーニングの手法の1つです。
AlexNetは8層のニューラルネットワーク構造(5層の畳み込み層と3層の全結合層)を使っていました。
それに加えてReLU活性化関数の採用によって、従来のタンジェント関数より学習が高速になりました。
またDropoutによる過学習の防止も行い、データ拡張技術の効果的な活用をしていました。
2台のGPUを用いた並列計算の実装もしていました。
このコンテストの第2位は認識のエラー率は26.2%でした。
しかしAlexNetはエラー率15.3%で1位になります。
AlexNetはこのコンテストでディープラーニングの有効性を示しました。
AlexNetの快感はいかほどだったか?
AlexNetの活躍はAI史に残るものでした。
AlexNetはIlya Sutskeverとジェフェリー・ヒントンという人が開発しました。
コンテストで無双したときどれぐらい気持ちよかったのでしょうか?
なんといったって2位に大差を付けて優勝してるわけです。
それはさぞ快感的な気持ちになったことでしょう。
私も味わってみたいものです。
きっとその思い出でご飯を何杯も食べられるかもしれません。
コンピューティングパワーの向上(GPUの活用)
GPUの活用によってコンピューティングパワーが向上しました。
GPUはCPUと比較して並列処理に優れていて、行列演算を高速に実行できます。
これによってディープラーニングの学習時間を大幅に短縮しました(数週間→数時間)。
またメモリバンド幅が広く、大量のデータ転送が可能でした。
電力効率も良く、同じ計算でもCPUより少ない電力で実行可能でした。
NVIDIAのCUDAによって汎用計算への道が開かれました。
- Keplerアーキテクチャ(2012年)で本格的なディープラーニング対応
- Voltaアーキテクチャ(2017年)でテンサーコアを導入
- Ampereアーキテクチャ(2020年)で更なる性能向上と省電力化を実現
またクラウドでもGPU活用ができるようになりました。
- AWS、Google Cloud、Azureなどが提供するGPUインスタンス
これらによって必要な時だけ高性能な計算リソースを利用可能になりました。
複数GPUの並列利用による更なる高速化を行えて、コスト効率の良い AI 開発環境が実現しました。
ビッグデータの利用可能性の拡大
さまざまなデータ収集元によってビッグデータの活用が可能になりました。
たとえばIoTデバイスの普及によって大規模なセンサーデータの収集が行えるようになりました。
それからスマートフォンの位置情報や行動データもです。
SNSによって大量の投稿テキスト、画像、動画データを使えるようになりました。
Eコマースでの購買行動データも収集できます。
産業機器からのセンサーデータの自動記録も活用できるようになりました。
ストレージ技術が進化したことで大容量のデータを保管することが可能になりました。
クラウドストレージも大容量化し、低価格化しました。
また分散ストレージシステムの発展により分散的なデータ保存が可能になります。
データレイクというさまざまなソースから収集したデータを元の形式のまま保存するシステムで、柔軟なデータ保管が可能になりました。
高速SSDの普及によってデータアクセス性能が向上しました。
データ処理技術についてもApache Sparkなどの分散処理フレームワーク。
リアルタイムストリーミング処理。
NoSQLデータベースによる非構造化データ。
データパイプラインの自動化技術などにより、効率的なデータ処理が行えるようになりました。
ビッグデータに情報が盗まれる?
スマホとか使ってると位置情報サービスとかいろいろ見る機会があると思います。
私が驚いたのがスマホで自分の行動を記録できるというものです。
つまり地図上でどこに行ったか記録されて、その記録がネットを通じて企業に送信されているのです!
もちろん、この情報もビッグデータとして活用されます。
しかし、なんだか不気味なものですよね。
自分の近場を行き来している情報がデータとして取られて、それがAIの学習データとして使われるなんて。
私一人の情報なんてわざわざ見てやろうなんて人は少ないかもしれませんが、それでも気分の良いものではないのは確かです。
ディープラーニングの技術的特徴(特徴量の自動抽出)
画像認識や音声認識などの機械学習タスクにおいて、「特徴量」は極めて重要な要素です。
では、ディープラーニングは特徴量抽出の概念をどのように変革したのでしょうか?
従来手法の限界
これまでのパターン認識では、エンジニアやデータサイエンティストが自らの経験と専門知識を活かして、特徴量を手動で設計する必要がありました。
例えば、画像認識タスクでは「エッジの強さ」「色の分布」「テクスチャのパターン」といった特徴を、人間が試行錯誤しながら定義していました。
この手法には2つの大きな問題がありました:
- ドメイン知識への強い依存
- 新しいタスクごとに特徴量の再設計が必要
特徴量ってなに?
特徴量ってなんなのでしょうか?
なんだよ、特徴量って。そう思いませんか?
これは簡単に言うとデータの特徴を数値化したものです。
特徴を数値化なんて、そんなことできるのかって話ですが、できるんですね。
たとえば鼻が高い人は鼻が低い人より数値が大きくなったり。
口が大きい人は口が小さい人より数値が大きくなったり。
たぶんそんな感じです。
ディープラーニングによる革新
ディープラーニングの登場により、この状況は劇的に変化しました。
ニューラルネットワークは、生データから直接、タスクに最適な特徴を自動的に学習できるようになりました。
特に注目すべきは、その階層的な学習構造です。
例えば畳み込みニューラルネットワーク(CNN)では:
- 第1層:エッジや単純な線分の検出
- 中間層:テクスチャやパターンの認識
- 深層:物体の部分や全体的な構造の把握
というように、層を重ねるごとにより抽象的な特徴を自動的に獲得していきます。
エンドツーエンド学習の実現
さらに革新的なのは、エンドツーエンド学習の実現です。
従来は:
- データの前処理
- 特徴量抽出
- モデル学習
- 後処理
という複数のステップが必要でした。しかし、ディープラーニングでは、入力から出力までの全プロセスを一貫して最適化できます。これにより、システム全体としての性能が大幅に向上しました。
進化する機械学習(5つの学習手法)
機械学習の世界は日々進化を続けています。
近年注目を集める5つの革新的な学習手法について、実例を交えながら詳しく解説します。
転移学習:モデルの知識を新しいタスクへ転用
転移学習は、すでに学習済みのモデルの知識を別のタスクに活用する手法です。
例えば:
from transformers import BertModel, BertTokenizer
# 事前学習済みBERTモデルの読み込み
model = BertModel.from_pretrained('bert-base-uncased')
# 新しいタスク用に最終層だけを調整
model.classifier = NewTaskClassifier()
この手法の利点は:
- 学習時間の大幅な短縮
- 少ないデータでも高精度な結果
- 計算リソースの効率的な利用
実践的なユースケース
画像認識分野では、ImageNetで事前学習されたResNetやVGGを使用し、自社特有の画像分類タスクに適用するケースが一般的です。
自己教師あり学習:ラベルなしデータの可能性を解放
膨大なラベルなしデータを効果的に活用する自己教師あり学習。
例えばBERTは、文章中の単語を隠してそれを予測する事前学習により、言語の深い理解を獲得します。
# マスク言語モデルの例
text = "The [MASK] is bright today."
# モデルが「sun」や「sky」などを予測
特に注目すべき点:
- データのラベル付けコストの削減
- より自然な特徴表現の学習
- 大規模データの効率的な活用
Few-shot学習:データ不足との戦い
Few-shot学習は、少量のデータでも効果的に学習できる画期的な手法です。
例えば医療分野では、稀少な症例の診断にこの手法が活用されています。
プロトタイプネットワークの実装例
def prototype_network(support_set, query):
# サポートセットから各クラスのプロトタイプを計算
prototypes = calculate_prototypes(support_set)
# クエリとプロトタイプの距離を計算して分類
distances = calculate_distances(query, prototypes)
return classify_based_on_distances(distances)
強化学習:試行錯誤を通じた最適化
強化学習は、環境との相互作用を通じて最適な行動を学習します。
例えばロボット制御や自動運転の分野で活躍しています。
class DQNAgent:
def select_action(self, state):
if random.random() < epsilon:
return random.choice(actions)
else:
return model.predict(state).argmax()
実用例:
- ゲームAIの開発
- 産業用ロボットの制御最適化
- トレーディングシステムの構築
マルチタスク学習:効率的な知識の共有
複数のタスクを同時に学習することで、タスク間の共通知識を効率的に獲得します。
class MultitaskModel(nn.Module):
def forward(self, x):
shared_features = self.backbone(x)
task1_output = self.task1_head(shared_features)
task2_output = self.task2_head(shared_features)
return task1_output, task2_output
実践的なメリット
- 計算リソースの効率的な活用
- より汎用的な特徴表現の学習
- オーバーフィッティングの抑制
おわりに
第3次AIブームはまさにディープラーニングのブームでした。
このブームは現在でも続いています。
AIの時代に生きられることを幸運に思うか、不幸に思うかは、あなた次第ですね。