最近、AIや機械学習を本格的に学び直したいと考えている。
これまでは基幹システム開発を中心に経験してきたが、今後は以下を目標にしたい。
- Kaggle Competitionsで上位を目指す
- AIモデルを自分で実装・改善できるようになる
- 数学や統計も含めて体系的に学ぶ
ただ、機械学習についてはほぼ未経験。
NumPyやpandasを少し触ったことはあるものの、かなり時間が空いているため、基礎からやり直すことにした。
今回は、ChatGPTを講師として活用しながら、AI学習を始めた内容をまとめる。
現在のスキル感
学習開始時点のスキルはざっくりこんな感じ。
- Python:簡単なスクリプト経験あり
- Linux:基本操作可能
- Git:GUI中心だが利用経験あり
- SQL:基本操作可能
- AWS資格
- Cloud Practitioner
- Solutions Architect Associate
- Developer Associate
- Azure AZ-900取得
- 機械学習経験:ほぼなし
- Kaggle:Titanicを少し触った程度
数学や統計もかなり忘れているため、そこも含めてやり直している。
ChatGPTに最初に相談したこと
最初にChatGPTへ、自分のスキルや目標を整理して伝えた。
例えば以下のような内容。
- Python経験
- 数学への苦手意識
- Kaggleへ挑戦したいこと
- 理論だけでなく実装もしたいこと
- 1日1時間程度の学習時間
すると、現在地に合わせたロードマップを提案してくれた。
最初に取り組んだ内容
まずはNumPyの基礎から始めた。
以下を実装。
- ndarray
- reshape
- slice
- broadcasting
- 行列積
例えばこんなコード。
import numpy as np A = np.array([[1,2],[3,4]]) B = np.array([[5,6],[7,8]]) print(A @ B)
出力結果。
[[19 22] [43 50]]
ここで「行列積」が機械学習や深層学習の基礎になることを学んだ。
NumPyで印象に残ったこと
特に重要だと感じたのが shape。
print(A.shape)
深層学習では shape ミスが頻出するらしく、かなり重要とのことだった。
また、axis=0 と axis=1 の違いも最初は混乱した。
実際にコードを書きながら、
- axis=0 → 縦方向に集約
- axis=1 → 横方向に集約
という感覚が少しずつ理解できてきた。
統計も基礎からやり直し
次に平均・分散・標準偏差を実装した。
import numpy as np import math x = np.array([1,2,3,4,5]) mean = x.sum() / x.size var = np.sum((x - mean) ** 2) / x.size std = math.sqrt(var) print(mean) print(var) print(std)
ここでは、
- なぜ平均との差を2乗するのか
- なぜ最後に平方根を戻すのか
など、式の意味も合わせて学習した。
randnで正規分布を理解
以下も実行した。
x = np.random.randn(1000)
最初は「なぜこんな綺麗な山型になるんだ?」と思ったが、調べると randn() は正規分布に従う乱数を生成する関数だった。
単にコードを動かすだけでなく、
を調べるのが重要だと感じた。
pandasとTitanicへ
その後は pandas を学習した。
- CSV読み込み
- 欠損値
- groupby
- describe()
さらに Kaggle の Titanic データセットを読み込み、以下を確認した。
print(df.info()) print(df.describe()) print(df.isnull().sum())
ここで初めて、
- 欠損値がかなり多いこと
- Fare が右に歪んだ分布をしていること
- Cabin は欠損が多すぎること
など、「データを見る」という感覚が少し分かってきた。
今後やりたいこと
今後は以下を進めたいと思っている。
- Titanic分析継続
- scikit-learn
- 特徴量エンジニアリング
- PyTorch
- 深層学習
- Kaggle参加
- 数学(線形代数・微積・統計)
かなり長い道のりだが、少しずつ積み上げていく予定。
同じような人へ
もし、
- AIに興味はある
- でも何から始めれば良いか分からない
- 数学に不安がある
- 実務経験はあるけど機械学習は未経験
という人がいたら、まずはNumPyやpandasを触ってみるのはかなり良い入り口だと思っている。
また、ChatGPTを「答えを出す道具」ではなく、
- 講師
- 壁打ち相手
- 解説役
として使うのはかなり相性が良いと感じている。