AdaBoundとは
AdaBoundとは、適応的学習率を持つ最適化アルゴリズムの一種で、AdamとSGDの長所を組み合わせた手法です。学習の初期段階では、Adamのように適応的に学習率を調整し、後期段階ではSGDのように一定の学習率に収束させることで、高速な収束と優れた汎化性能を両立させます。
この手法は2019年に発表され、深層学習における最適化問題の解決策として注目を集めました。学習率の上限と下限を動的に設定することで、Adamの過学習傾向とSGDの収束速度の遅さという両者の欠点を克服しています。
【PR】プログラミングや生成AIを無料で学べる「コードキャンプフリー」
AdaBoundの学習率調整メカニズム
AdaBoundは学習の進行に伴い、学習率の変動幅を段階的に狭めていく仕組みを採用しています。具体的には、下限値と上限値を時間ステップの関数として定義し、訓練が進むにつれてこれらの境界が徐々に狭まっていきます。
境界関数は学習率がゼロに近づきすぎることを防ぎ、同時に過度に大きな値を取らないよう制限します。この二重の制約により、訓練の安定性を保ちながら、効率的なパラメータ更新が可能となります。
| パラメータ | 説明 |
|---|---|
| α(アルファ) | 基本学習率 |
| β1、β2 | モーメント推定の減衰率 |
| γ(ガンマ) | 境界収束速度 |
| final_lr | 最終学習率の目標値 |
Pythonでの実装コード例
AdaBoundをPyTorchで実装する場合、既存のオプティマイザクラスを継承して独自の更新ルールを定義します。以下のコードは基本的な実装例を示しており、学習率のクリッピング処理が中心的な役割を果たしています。
import torch
from torch.optim import Optimizer
class AdaBound(Optimizer):
def __init__(self, params, lr=1e-3, betas=(0.9, 0.999),
final_lr=0.1, gamma=1e-3, eps=1e-8):
defaults = dict(lr=lr, betas=betas, final_lr=final_lr,
gamma=gamma, eps=eps)
super(AdaBound, self).__init__(params, defaults)
def step(self):
for group in self.param_groups:
for p in group['params']:
grad = p.grad.data
state = self.state[p]
if len(state) == 0:
state['step'] = 0
state['m'] = torch.zeros_like(p.data)
state['v'] = torch.zeros_like(p.data)
m, v = state['m'], state['v']
beta1, beta2 = group['betas']
state['step'] += 1
m.mul_(beta1).add_(grad, alpha=1-beta1)
v.mul_(beta2).addcmul_(grad, grad, value=1-beta2)
step_size = group['lr']
final_lr = group['final_lr'] * group['lr']
lower_bound = final_lr * (1 - 1/(group['gamma']*state['step']+1))
upper_bound = final_lr * (1 + 1/(group['gamma']*state['step']))
step_size = torch.clamp(step_size/torch.sqrt(v).add_(group['eps']),
lower_bound, upper_bound)
p.data.add_(m * step_size, alpha=-1)
このコードでは、モーメンタムと二次モーメントを計算した後、クリップ処理によって学習率を適切な範囲に制限しています。ステップ数が増加するにつれて境界値が狭まり、最終的にはSGDに近い挙動を示すようになるのが特徴です。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
【PHP】コードの動作確認をローカル・オンラインで行う方法
MacでWordPressのローカル環境を構築する方法を解説
PHPで日本語の曜日を表示する方法を簡単に解説
【Mac用】miテキストエディタのインストール方法や使い方を解説
Photoshopで文字入れする方法と入力テキストの編集方法
写真を切り抜いてコラージュを作る方法とおすすめアプリ・ツールを紹介
Yahoo APIの使い方やデータの取得方法を簡単に解説
【Xcode】シミュレーター(Simulator)の起動方法とエラー対処法を解説
Photoshopの無料筆ブラシをダウンロードする方法やおすすめを紹介
KeynoteとPowerPointの違いや変換方法などから徹底比較
ITやプログラミングに関するニュース
株式会社スーツがウェビナー開催、総務部門のプロジェクト管理による生産性向上を解説
一般社団法人ソフトウェア協会がAIビジネス活用セミナー第2弾を開催、各社のリアルな事例を紹介
社会構想大学院大学がリーダーシップセミナー開催、経済社会の未来像を構想
株式会社TMJとLINE WORKSが共催ウェビナー開催、AI活用で店舗の電話対応課題を解説
TAC株式会社が司法書士試験受験者向けウェビナーを開催、挫折しないための学習戦略を解説
株式会社Virtual Wallが不動産クラファン事業者向けウェビナー開催、脱・高利回り戦略を解説
株式会社ビーブレイクシステムズがMA-EYES解説ウェビナーを開催、30分で製品概要を紹介
東京都中小企業診断士協会とSENQが共催セミナー開催、承継型起業ETAの可能性を解説
清和ビジネスが共催セミナーを開催、エンゲージメント視点のオフィス移転・リニューアルを解説
abc株式会社が無料投資セミナーを開催、M&A経験17年の専務が直接指導


