ネクストスキル週次ゼミ(1月のゼミまとめ)
だいぶ遅くなってしまいましたが、、1 月のネクストスキルの週次ゼミのまとめです。
1 月は主に機械学習や、機械学習システムについて学びました。
1 月に学んだこと
第 1 週
機械学習の入門的なことを学びました。
- 人工知能(AI)とは
- ルールベース
- 強い AI・弱い AI
- フレーム問題
- チューリングテスト
- 中国語の部屋
- 機械学習の概要とアルゴリズムの例
- 教師あり学習(分類)
- 教師データ
- アルゴリズム
- 学習
- モデル
- 推論
- 化学習
- 教師あり学習(分類)
- scikit-learn を用いたデモンストレーション
- ワインの例
- MNIST の例
- ブログの関連記事(教師なし学習)の例
ブログの関連記事の例はおもしろいなと思いました。意外と機械学習をアプリケーションに適用する例はあるなと感じました。
第 2 週
ディープラーニングについて学びました。
- ディープラーニングの概要と、教師あり学習の復習
- パーセプロトン
- ニューラルネットワーク
- ディープラーニング
- ディープラーニングの仕組みと、デモンストレーション
- 入力層、隠れ層、出力層
- 知っておきたい発展的トピック
- CNN
- RNN
- GAN
組み合わせる層を変えれば多くのパターンが生み出せそうだと思いました。ハイパーパラメータのチューニング方法などより学習したいと思いました。
第 3 週
機械学習システムについて学びました。
- 機械学習システムのよくある課題と、本来必要な要素
- データ収集
- データレイク
- ETL
- 実験・学習
- 特徴量エンジニアリング
- 実験管理
- リリース管理
- デプロイ・推論
- サービング
- 監視
- パイプライン
- データ収集
- 典型的なデータ基盤の復習
- データ収集
- ETL: DB to データレイクや、DWH to データマート
- ポーリング、更新イベント(リアルタイム性などで検討)
- Lake Formation
- BI
- SQL
- Athena
- ETL: DB to データレイクや、DWH to データマート
- 実験・学習
- 特徴量エンジニアリング
- 実験管理
- DVC
- MLflow
- デプロイ・推論
- サービング
- Tensorflow Serving
- Torch Serve
- ONNX Runtime
- サービング
- データ収集
- 実践的な機械学習システムの構成要素
- XAI(Explainable AI)
- 公平性
- プライバシー
機械学習モデルの作成は、機械学習システムのほんの一部に過ぎず、機械学習を用いたアプリケーション、システムを作るには、アプリやインフラ周りなど、その他多くの知識が必要だと感じました。
第 4 週
受講生のアンケートへの回答の講義でした。
- 抽象クラスとインタフェースの活用
- フレームワークの作成
- Strategy パターン
- テスト、モック
- いろいろな言語のインターフェース
- interface 宣言
- ダックタイピング
- サービスクラスとデータアクセスのパターン
- Service、ApplicationService、DomainService
- データアクセスパターン
- Table Data Gateway(DAO パターン)
- DB のテーブルと 1 対 1 のクラス
- Active Record
- アクティブレコードパターンの実装
- DB のテーブルと 1 対 1 で、ドメインモデル + データアクセスのメソッド。
- Repository
- ドメインモデルの都合でデータアクセスする
- Table Data Gateway(DAO パターン)
- JavaScript におけるコールバック地獄と Promise と async/await
- fs.readFile を使った、コールバックの例(コールバック地獄)、Promise
- Promise 化
- readFileSync メソッド
- システム連携のプラクティス
- マイクロサービスのプラクティスなど
- どれだけお願いしやすいか
- 同期
- 可用性
- キャッシュ
- 非同期
- キュー
- プッシュ
- webhook
- プル
- 更新頻度の調整が必要
- サーキットブレーカの概要
- REST や gRPC で負荷が上がったら、わざと停止する処理
- エラーやレスポンス遅延によりそれ以上負荷をかけない
- 実装方法
- ライブラリ
- 別プロセスのプロキシ
- Envoy プロキシ。高度な手法
- Istio や Appmesh で一元管理
- マイクロサービスの分割と DDD
- サイズにとらわれるな。チームで最適解を選ぶ
- 機能中心ではなく、モデル中心に考える。
- POA, DOA, OOA
- DDD の境界づけられたコンテキストで分ける
- フロントからは BFF を挟み、そこに機能を置く。裏はマイクロサービス
- 例: 商品、注文、発送
- マイクロサービスは実装量が増える
- トランザクション問題
サーキットプレーカーや、マイクロサービスなどは自分がリクエストしましたが、他にも知らなかったことがあったので、聞けてよかったです。ここから必要になった時などに深掘りして学習していけそうです。
まとめ
1 月は、機械学習中心でしたが、機械学習システムを作る上では、前に学習してきたアプリケーション基盤、クラウドネイティブな設計などの話が生きてくるなと感じました。
