大福餅

大福餅

最強DB講義 大規模言語モデルの基礎・最新動向

dblectures.connpass.com

 

だいぶ前に参加したオンライン講義である。

本当は聞いた当日にでも書こうと思ったのだが、この講義を聞いている途中に体調を崩し、今日ようやくアーカイブを見て最後まで確認することが出来た。

一応、参加者だけにリンクを知らされているようであるので、現状は見れない (晒さない) が、過去の講義も動画化しているので、そのうち表に出るのではないかと思われる。

過去の講義も興味深いのが多いので、チャンネル登録しておいた。

www.youtube.com

 

 

 

次のイベントでは、RAGなどの話が中心の模様。dblectures.connpass.com

 

ここでは、31回目の講義の内容について、概要と所感を書く。

概要

  • 本講義では、前半は自然言語に関するニューラルネットワークの基礎、後半は最近の大規模言語モデルの動向、またそれらを支える手法やアルゴリズム、ライブラリなどの紹介であった
  • 自然言語処理タスクの多くは「分類問題」として扱われる
    • テキストを2つのクラス (感情など) に分ける
    • 入力に続く次の単語を生成 (様々な単語の中から1つ選ぶ) する
  • ニューラルネットワークでは、テキストを「トークンの系列」データとして扱う
    • 近年はトークンの最小単位を「バイト」として、未知語を発生させない
  • 初期のニューラル自然言語処理では、タスクごとにネットワーク設計を行い正解情報付きのデータセットで学習
    • 深層学習で性能は高まったが、データがないと精度が高まらない
  • そこで大規模コーパスで事前学習させた「言語モデル」を用意し、そこからタスクごとにファインチューニングで、特化させるようにした
    • 汎用的なモデルを用意を作っておいて、後はタスクに合わせて微調整
    • PaLM2を医療言語タスクに特化させて、Med-PaLMを作る感じ
    • 事前学習ではアノテーションなし (教師なし学習)、ファインチューニングは正解ラベル付き (教師あり学習)
    • E資格でも問われるが、BERTからそのような動きが見られた
  • 自然言語処理のタスクは「自然言語理解 (NLU)」、「自然言語生成 (NLG)」の2つ
    • 前者はテキスト分類、感情分析など
    • 後者は機械翻訳、要約など
  • エンコーダ・デコーダの話
    • 最近の事前学習済み言語モデルの多くが、Transfomerベース
    • RNNやCNNを用いず、アテンションのみを用いたエンコーダ・デコーダモデル
    • アテンションとは、デコーダが位置単語ずつ出力する時に、エンコーダされたテキストの土の部分に注意をすればよいか与える機構
    • セルフアテンション:エンコーダデコーダ間だけではなく、それぞれでもアテンションを取る
    • マルチヘッドアテンション:アテンションを複数のヘッドに分割して処理する。
  • セルフアテンションが有効なのは、「系列内で遠く離れた単語の関係性も直接考慮できるようになったため」
    • RNN・LSTMの欠点は、入力数が多くなればなるほど、初期に入力された単語が参照できないこと
  • 言語モデルの大規模化
    • BERTの紹介
      • 機械読解 ('SQuAD1.1) においいて、人間の質問応答スコアを大きく超える性能を達成
      • 事前学習:マスク化言語モデリング
        • 入力分の一部をマスクし、予測させる
      • BERTのファインチューニング:シンプルな出力層を1層だけ基盤モデルの最上部に追加する
    • GPT-3の紹介
      • 超大量のテキストデータ (3000億トークン)で事前学習、96層の超巨大なTransformerデコーダに基づく言語モデル
      • パラメータ数は175B = 1750億個
      • GPT-3は、生成タスクに適したデコーダ (自己回帰) タイプ
        • BERTのエンコーダタイプとは異なる
      • GPT-3の膨大な事前学習によって、人間のように「少数の例示による学習」が可能になってきた
        • 事前学習のテキスト内には、同一タスクの例が繰り返し現れるコンテキストも含まれているため、例示による学習で向上させているのでは
      • few-shot学習
        • タスク説明と少数の例を与えるだけで、モデルの更新をしなくても問題を解くことが出来る点が注目を集めた
    • Scaling laws
      • 計算量、学習トークン数、パラメータ数を増やせば増やすほど、性能は良くなる
      • 現状も大量の計算機資源を用いて、大量のデータを、大きいモデルで学習すれば良いモデルが出来る
    • Chain-of-Thougt
      • プロンプトに試行の途中過程を与えてあげると、推論能力が増す現象
        • りんご1個を持ってて、そこにりんご1個を与えるとりんごが2個になる、これが1+1=2 という感じ
        • ある程度のモデルサイズが必要
    • Let's think step by step
      • プロンプトに「ひとつひとつ考えて」というおまじないを与えると、推論過程を出力し、精度が良くなる
      • プロンプトチューニングの大事さを表している顕著な例
  • 大規模言語モデルのさらなる発展
    • 汎用人工知能がChatGPTにより、遠い夢ではなくなっている
      • すでに様々なタスクを1つのモデルが人に近いレベルで行っている
    • Instruction-tuning (Flan)
      • 指示を与えることで、指示に従った出力が出来るようにチューニング
        • 前提文と仮説文の間に含意関係は成り立つますか
          • 前提:海の幸が更に盛り付けられています。
          • 仮説:色とりどりの野菜がお皿に盛り付けられています。
          • 出力は「はい」「いいえ」「どちらでもない」から選んで、その根拠も述べてください
        • 上記の入力を与えると、その指示に従った出力を行う
          • 例:「いいえ」、野菜は海の幸には含まれません
      • 未知のタスクにも指示に従った応答が可能になる
    • ChatGPT (GPT-3.5)
    • GPT-4の紹介
      • 言語モデルからマルチモーダルに進化
      • 模擬司法試験を上位でパスするレベル
    • Geminiの紹介
      • 入力:言語、画像、音声、動画
      • 出力:テキストと画像
    • LLaMA-1,2 によるオープン化
      • GPT-4, Geminiでは中身が分からないが、LLaMAは中身を情報を公開している
      • そのため、LLaMAを使ってGPT-4のようなモデルを作ろうという技術開発が加速
      • モデルに追加したパラメータのみを効率よく学習 (PEFT) する手法で高い効果が得られている
        • 代表例はLoRA
    • ChatGPT のようなLLMの学習方法の概要
      • 1. 教師なし学習で大量のコーパスからベースのLLMを学習
      • 2. 様々なタスクを自然言語で溶けるようにインストラクションチューニングを行い更新
      • 3. プリファレンスデータセット (人の好みなどが反映されている)を作成し、報酬モデリングを実施
      • 4. 同データで報酬モデルが高い評価値を出す (人に合わせる) ように強化学習で更新 (その後、3に戻る)
    • 事前学習データ
      • LLaMA1 は1.0 ~ 1.4Tトーク
        • 殆どの場合、英語コーパス (日本語はLLaMa2 だと0.1%しかない)
    • インストラクションチューニング
      • 2段階のチューニングを行った
        • 1. Flanチューニングを実施
        • 2. 人で作成した高品質・広範囲なインストラクションデータ2.7万件を使って、更にモデルを更新
          • helpfulness (有用性) とsafety (安全性)の観点がデータに存在する
          • これにより、罵ってほしいなどの入力を回避する、ということを学習させ、有用・安全な回答になるようにチューニングする
    • 報酬モデリング
      • モデルの出力2つを生成し、人がhelpfulness/safetyの基準でどちらが良いか選ぶ
      • また各基準で、出力を「採択」するか「棄却」するかを選ぶ
      • その回答を教師あり学習として、各基準の報酬モデルについて学習させる
    • 強化学習
      • PPO (深さ重視) と Rejection Sampling fine-tuning (幅重視) の2種類を併用する
      • Rejection Sampling fine-tuning:同じモデルからNサンプル出力し、報酬モデルがベストとした出力を正解として、チューニングする
      • PPO:報酬モデルを実際に強化学習として行い、最初のモデルから離れないように報酬を設計し、報酬が高くなるような手法
    • 評価すると、LLaMA2 70B がGPT-3.5と匹敵する
      • 日本語も理解できるようだが、英語で返ってくる
    • 課題としては、ハルシネーション (幻覚)・バイアス
      • 質問応答のタスクはハルシネーションが顕著
      • 翻訳や要約はあまりない
  • 最近の動向
    • Huggingface Open LLM leaderboard
    • LoRAの概要
      • 学習済みの重みを凍結して、新たにLLMの各層に挿入した適応用の低ランク分解行列のみを学習
      • どの層に適用すれば効果的か、という議論が続いている
    • Mixture-of-expertsの概要
      • TransformerのFeed-forward networkレイヤを expert と呼ばれる複数のレイヤに置き換え、トークン毎に利用するexpertを変える
        • "The" ではFFN2, "Dog" ではFF1というように感じ 
        • 推論時にネットワークの全パラメータを使わない
        • 2020年頃から利用が始まる。GPT-4に使われているという噂も
        • 同パラメータ数に比べると学習や推論が高速
        • GPUメモリが多く必要、ファインチューニング時に過学習しやすい
      • レイヤ処理は概ね以下の4ステップ
        • ルーティング:各トークンを少数のexpertにアサイ
        • 順序を並び替え:expert毎にグループing、capacityを超えたらトークンをdrop
        • トークンをFFNで処理
        • 順序を戻す:トークン毎のexpert数が2以上なら、ルータの確率を使って重み付け
      • インストラクションチューニングを行ったMoEモデルはdenseモデルよりも効果的
    • DPO: Direct Preference Optimization
      • 強化学習に変わるアライメント法
        • 学習が安定しにくい強化学習の代わり、報酬モデルを作らず、LLMによる分類問題として扱い学習することで、人の嗜好とLLMのアライメントを行う
    • FlashAttention, -V2
      • 厳密計算によるAttentionの高速化
      • 高速かつメモリ効率が良い計算が可能
      • 8k, 16kのような長いcontextを現実的に扱えるようになってきた
    • Grouped-Query Attention
      • デコーディング時に過去のトークンに対するKVキャッシュを大きく減らすことが出来る
    • Sliding Window Attention
      • sliding windowにより局所的なアテンション計算を行うことで計算量を大幅に落とせる
  • マルチモーダルモデル/エージェント
    • NTT版大規模言語モデル「tsuzumi」
      • 日本語に強い、軽量、柔軟なチューニング、マルチモーダル
      • 視覚と言語を結びつけて理解する技術に取り組んでいる
    • Next-GPT
      • 画像・音声・動画のエンコーダ、LLM、画像・音声・動画のデコーダををつなぐ小さいネットワークのみを学習
      • any-to-anyのマルチモーダルモデルの作成
    • pix2Act
      • 画像から自然言語の指示に従って、行動を生成
    • Voyager
      • GPT-4/3.5でマインクラフトをプレイするエージェント
    • ChatDev
      • 仮想のソフトウェア開発会社。エージェントたちが互いにチャットしながらコードやドキュメントを納品する
    • ChatEval
      • モデルの評価を行う際に複数のエージェントで議論し、どちらのモデルの出力が良いか決める
  • Knowledge Distillation
    •  Alpaca.self-instruct
      • 大型のLLM から小型のLLMへ知識を移すアプローチを行ったモデル
      • このモデルにより、上記の流れが流行
    • Vicuna
      • ユーザーとChatGPT間の対話例7万件を利用して、13BサイズでChatGPTの回答品質の90%を達成
    • WizardLM/Evol-instruct
      • GPT-3.5 を用いてインストラクションチューニング用のデータをより深く (難しく) ・広く生成する
      • より品質のデータを作成する
      • GPTによって品質を評価
    • Distilling Step-by-Step
      • PaLM 540B を教師LLMとしてChain-of-thought promptingにより出力の根拠を生成させる
      • 生徒となる小さいLLMは、この根拠をマルチタスク学習の正解として与えて、教師LLMから「説明能力」を蒸留させることで、小さなモデルでも高い性能を発揮できる
    • Orca/ Explanation tuning
      • 正解を導くための適切なシステムプロンプトを教師LLM に与えて出力させたデータでインストラクションチューニング
      • これも小さなモデルで高い性能を発揮させるための方法
      • Orcaはその一例
    • Orca-2/ Prompt Erasing
      • 適切なシステムプロンプトで良い出力を教師LLMに出力させてから、学習時にはシステムプロンプトを慶して学習を行わせる
      • 自らタスクやモデルサイズに応じて推論戦略を考える
      • ユーザーはタスクに適切なプロンプトを考えなくても良くなっていく
    • Zephyr/ Distilled DPO
      • インストラクションチューニングだけではなく DPOにおける「人のフィードバック」をGPT-4のフィードバックにしてdistillationを行うことで性能向上
    • phi-1
      • GPT-4を活用してフィルタリングした高品質のGithubコードと、GPT-3.5 を使って生成した教科書品質のデータを利用
  • Model Merging
    • Model soups/ average mergin
      • 同じ事前学習モデル由来の複数個のチューニングモデルを単純平均してマージ (一様スープ)
      • Held-outデータで良いモデルから逐次的に性能が良くなるものだけをマージして平均を取る (貪欲スープ)
      • モデルの平均を取ることで性能を良くする方法
    • SLERP (球面線形補間)
      • 同じ事前学習モデル由来の2つのファインチューニングモデルをSLERPでマージすると性能が良くなる
        • 方法自体は古くからある
      • 良くなる理由はわかっていない
    • Task arithmetic
      • モデルパラメータを一列に並べたベクトルとして考える
      • ファインチューニング前後のベクトルを加算・減算すると新たな能力を得たり、タスクを忘れたりすることが出来る
      • Ties-mergin:複数のモデルのパラメータを並べて、良いものを取ってマージすることで良い性能のモデルを得られる
    • DARE
      • タスクベクトルの90%以上をゼロにしてもLL<では性能に大きな影響が出ないことを報告
      • スパース化したモデルを加算すれば、タスク間の干渉が減りマージしやすくなる
    • Passthrough
      • ベースモデルを他のモデルにstackすると何故か性能が向上する
      • 出力層に近い部分を付け足すのが実験的にうまくいっている
    • Mergin PEFT model
      • LoRAアダプタなどのPEFTモジュールに関してもTask arithmeticが効果ある
    • LoraHub
      • タスクに対し、学習無しで複数個のLoRAアダプターからどのアダプターを組み合わせる

 

所感

  • 2時間と長い内容だったが、基礎的な部分から最近の動向まで幅広く知ることが出来た
  • 内容自体は難しい部分もあったと思うのだが、資料が見やすく、聞きやすい説明だったので、概要をすんなりと知ることが出来た
  • 最近の動向以降に関する話は、とても興味深く聞くことが出来た
    • LLaMAの流れは、GPTと同等のモデルを作りたいというモチベーションからというのは初耳であり、面白く聞けた 
    • Mixture-of-expertの話も興味深い
    • マルチモーダルモデルの動向もGemini/GPT以外の知識もしれた
    • 最近流行りの小型モデルで性能を上げる流れも、SNS上で見かけていたが、モデルだけではなく、それを成立させるための手法を知ることが出来て納得した
    • プロンプトの話とかも、知っている知識にアップデートされる形でより理解が深まった
  • マルチモーダル、大型LLMによる小型LLMの性能向上、モデルマージンは今後も注目すべき分野だと思った
  • 個人的にはこれをタダで聞け、リアルタイムでは質問もできる点が凄いと思った
    • お金をとっても良いレベルだと個人的には思った
    • アーカイブで残るらしいので、いつでも見返せる点も良い

R-CNN, Fast R-CNN, Faster R-CNN の流れ

概要

  • 物体検出モデルは、画像内に写っている物体の分類及び位置を行う
  • R-CNN: Selective Searchにより物体の位置の候補領域を求める。その後、各領域をCNNに入力して、特徴マップを取得し特徴マップと教師を用いて、SVMにより分類し、領域 (バウンディングボックス) の回帰を行う。
    • 短所としては、候補領域ごとにCNNを行うため、処理の速度が低い
  • Fast R-CNN:先に画像全体をCNNで複数回畳み込み、取得した特徴マップから候補領域を抜き出すモデル。これによりR-CNNよりは速く処理が行えるようになった。
    • しかし、依然として外部のアルゴリズムであるSelective Search を用いていることが、学習を通しで行うことが出来なかったり、候補を2000個も出したりすることで、検出速度向上のためのボトルネックになっていた
  • Faster R-CNN: 領域候補の提案をニューラルネットワークによって実現させ、Selective Searchを排除したモデル。
    • この領域候補の提案を行うニューラルネットワークをRegion Proposal Network (PRN) と呼ぶ。
    • これにより、学習を一気に行うこと出来るようになる、GPU で候補領域の計算もできるようになったことで、速度が向上した

余談

  • Mask R-CNN: Fasterと同じ構造を持ちながら、矩形領域の物体検出だけではなく、ピクセルレベルでの物体検出を行うモデル。
    • より詳細に物体の輪郭を認識して、識別する。

VertexAI Search and Conversation の Search と Conversationの違いとは

cloud.google.com

 

概要

  • GCPの生成AI向けのサービスである、Search and Conversation。よく纏めて紹介されているのを見るが、SearchとConversationの違いは何なのか気になり調べ
  • Searchは「入力テキストに対して、ストレージの非構造化データ、BigQueryの構造化データ、Webサイトで検索したデータソースとして出力を返すサービス」
  • Conversationは「チャットボットのような対話型の機能の構築をサポートするサービス」
    • 飽くまでも別々のサービスと言える
    • 但しユーザーとエージェントのやり取りの際に、内外のデータソースの検索を使う機会も多々あるから、2つを合わせて紹介するのだろうと思う
  • G-gen等の事例では、Searchのみを使った事例もあり、必ずしも組み合わせて使う必要はなさそう
  • GCSやBigQueryとの繋がりを考える必要があること、出力の根拠も必要になってきていることから、よりシステムの内部に位置するSearchは、よく知っておきたいと思った。

余談

ここ2週間ぐらい、発熱などの体調不良で仕事をこなすので限界だったため、更新が滞っていた。

ようやく、平常時に近いところまで治ってきたので、少しずつ更新頻度を高めたいところ。

情報収集などは出来ているので、少しずつアウトプットしていきたい。

皆様も風邪には気をつけましょう。

C++ の vector から要素を完全に取り除く方法

leetcode.com

 

この頃コードを書く習慣が無くなってきているので、思い出しついでにLeetCodeの簡単な問題から解いて、感覚を取り戻している。

 

今日は、冒頭のリンク先の問題である「すでに数値が入っている配列から、指定した数値を取り除いた配列にする」問題を解いた時に調べた知見を共有する。

 

概要

  • vectorのある要素を完全に削除する方法は、以下のページの通り

zenn.dev

 

vec.erase(remove(vec.begin(), vec.end()), vec.end())

 

  • eraseは、指定した要素を取り除く
  • removeは、範囲から指定した数値を取り除き、配列の末尾のイテレータを返す
  • しかし、removeだと要素数は変わらず取り除かれて空いた分は、配列の最後の数値が末尾に追加されるらしい
    • [1, 2, 2, 3, 4] とあって 2を削除する場合、[1, 3, ,4, 4, 4] と詰めた後に、末尾に配列の最後の要素を追加する
  • removeで指定した数値を取り除き、erasa で追加された要素の最初から配列の最後までを削除することで、完全に排除できる
    • [1, 2, 2, 3, 4] から 2 を削除するとすると、removeで[1, 3, 4, 4, 4] とし、この場合4番目の要素から最後の要素をerasaで指定し削除する

所感

  • 最初removeだけだと、配列に謎の数値が入っていたので正解扱いにならなかったので調べた。
  • removeの仕様にそんなのがあったのなんて知らなかった。
  • 指定した要素を取り除くだけでなく、要素数も減らしたいということは結構あると思うので、これは覚えておきたいと思った。

 

【3章以降】世界一エンジニアの思考法

 

sumidare.hatenablog.com

前回の記事の続き.

残りの箇所を読み終えたので,概要と所感を記述する.

 

概要

  • マルチタスクは生産性が最低なのでやらない
    • 「今手を付けている仕事を1つに限定する」
  • 一日4時間は自分だけの時間を確保する
    • teams,メールもブロックして,自分の作業だけをする
  • 仕事が出来る人の記憶力が良いのは,理解をしているから
    • 反対に,記憶できていないのは理解が浅いから
    • 自分がやったことをクリアに説明できるように時間をかけて言語化してみる
    • 説明可能であるということは構造を整理して把握して,脳のメモリに乗せる必要がある
    • ブログを書く,なども有効
    • 「思い出そう」と頑張ることも大事
    • 頭の中のみで整理する
  • 理解・記憶・反復を行い,「脳の負荷を減らす」
  • コミュニケーション時には「情報量を減らす」ことに注意する
    • 情報量を与えすぎると相手も理解が浅くなり,質問が減る
    • 適度な情報を与えることで,相手も理解し質問が活発になる
    • 相手が必要だと思えば,質問が来るのでその時に追加の情報を与えれば良い
    • 自分も仕事で情報量を最小限にするよう資料を作った結果,伝えやすくなった経験がある
  • ただし日本特有の文化である「準備」も重要
    • 海外は,会議の前など一切準備せずその会議内で終わらせる瞬発力を鍛えている
    • 一方,なにかの前にきっちり準備し,改善する「日本」特有の文化はプレゼンで力を発揮する
      • 情報量を最小限にし,簡単なことをしっかり説明するように準備する
  • メモを取るときは「人が見ることを意識して出力する」
    • 日頃から人に伝えることを前提として準備しておくと,何かを聞かれた際の工数削減となる
  • コードも「読み物」として扱う
  • 通話が必要なときは「クイックコール」 (その場で通話)をすること
    • される側もわずかな手助けでプロジェクト全体が進むので,良い
    • 「気軽に聞ける仕組み」は,「気軽に断れる空気」とセットになっている
      • 助けになれない場合は断ることで済ませると,お互い気が楽になる
  • 「相手を否定しない」「相手のアイディアも否定しない」,「自分の考えを言う」ということで,お互い落ち込まずに,議論を生産性の向上につなげることが出来る
  • サーバントリーダーシップ」はメンバーが主体に動き,マネージャは彼らの障害を取り除く役割
    • 各々が考えてやりたい仕事をやるので,思考力も向上し,全体のレベルがアップする
  • 常に仕事を楽しんでいるか確認する文化
    • 命令ではなく,相手の自主性を尊重する文化
    • 「できるもの」として扱うことで本人のレベルが低くても,周囲の助けを借りつつ,最後まできちんとやれる事が多い
    • そのため,常に仕事を楽しむ環境を作ることで,メンバーたちがパワーを発揮しやすくなるように配慮する
  • 失敗に寛容な環境が大事.なにより,失敗数が多いということはそれだけ「チャレンジ」しているということ
    • 成功ばっかりは逆に「手堅い」ところだけをしている可能性もある
    • ここは印象的だった
    • もちろん失敗ばっかりしろという訳では無いが,失敗の数がチャレンジしているかの指標として考える,という思考は自分にはない視点だった
  • ワークライフバランスを考えることで生産性が向上する
    • 生産性を上げるのは「学習」
    • 定時で帰り,そのあと自分のペースで学習する
    • 仕事ばっかりだと短期的なアウトプットのみが上がり,根本的な生産性は向上しない
  • 「瞑想」「ディスプレイから離れる」「睡眠時間を取る」
    • 個人的は「睡眠時間を取る」以外はピンとこなかった
  • 飽きたら違うことをやることでリフレッシュになる
    • だらだら休憩すれば良いというものでもない
  • AIには「専門性」こそが強みとなる
    • ニッチな領域であればあるほど,学習用のデータが少ないのでAIには生産できない
    • 誰もやったことのないものに取り組んでいる専門家は,AIが取って代わることは原理的にはありえない
    • この点は,非常に納得がいった
  • 「批判」の文化が開発者の心を砕いてしまう
    • COCOAの例を出していた
    • 個人的には欠点を伝えるな,というよりはその伝え方を考えろよという感じがする
    • 何事にも敬意を払うことが必要なのではないかと思う
    • アメリカには「自分がどういう貢献ができるか」という公共性をベースに考えるため,少しでも何かをしてくれたら感謝を伝えるとのこと
  • 日本のソフトウェアに対する問題点
    • ハッカソンで,日本以外の国のメンバーはプログラムをバリバリ書いていたのに,日本のメンバーは書いていなかったという話は,正直グサッときたものがあった
    • 「自らの手で一流のソフトウェアを開発する力を身につけること」
    • 技術軽視の風潮をあらためることが,大事

感想

  • 個人的には読んで非常に為になる内容であった
  • 特に長期的に物事を見て,学習をコツコツと積み重ね生産性を上げていくことが必要だと思った
  • 仕事の効率を上げるのは「学習」はその通りだと思った.仕事で学ぶものではない.
  • 理解をするためには,自分で考えて説明できるまで反復すること
  • 現状,日本では上の者が命令した物を聞くだけになっているが,そうではなくメンバーがそれぞれ主体となって行動するような環境を作ることで,メンバー全員も育ち,生産性も上がる
  • そのような環境づくりが出来るように,自分も主体的に動くことも重要なのかもしれない
  • 成功の数=チャレンジしていない,という考えは目に鱗
    • 確かに新しいことに挑戦するときは,だいたい失敗していると思った
    • 成功が続いているのは,それだけ安定してしまっていると考えたほうが良いのだと思った
  • 自分で人生や幸せを,責任持ってコントロールすること,と最後に書かれていたが正にそのとおりだなと思った
    • 他責思考では駄目ということか

 

【1章から3章の途中まで】世界一エンジニアの思考法

 

 

所感

amazonにてセールが行われていたので、何かと話題になっている本を購入した。

現状まだ途中までしか読めていないが、為になる話が幾つかあったのでまとめてみる。

 

  • どんなに頭が良くても「理解」には時間がかかる。頭のいい人が理解が早いように見えるのは、時間を書けて基礎を積み重ねているので、すでに理解していることに関して頭のメモリにコンテキスト (文脈) が載っているからだ。
    • 出来る人でも教材を10回も見ているとのこと。
    • 「早くできるように頑張る」と基礎を積み上げずに結果だけを求めることで、最終的な生産性を下げていた可能性があるとのこと。
    • 「基礎」の理解に時間をかけるというのは大事、というのは分かっていても私は意外と放置してしまいがち。しかしMicrosoftのエンジニアでも、時間をかけて「基礎」を積み上げている、と聞くことで自分はより一層「基礎」に時間をかけなくてはと思った。
  • 「理解」とは以下の通り
    • その構造を掴んで、人に説明できること
    • いつでもどこでも即座に取り出して使えること
    • 知見を踏まえて応用が効くこと
  • 「感覚」で判断せずにファクトを積み重ねる
    • 「感覚」で決めつけず、あくまでファクトを積み重ねるべき
  • 頭の中に「メンタルモデル」をつくる
    • 人々が世界を理解し、予測し、解釈し、新しい状況に適用するための、自己の心の中のイメージや理論
    • 「対象がどういう状況でどのように動作するのか」というシミュレーションが出来るような脳内イメージのこと
    • 問題が起きた時にイメージができていれば、素早く解決することが出来る
  • 「Be Lazy」というマインドセット
    • より少ない時間で価値を最大化するという考え方
  • 優先順位は「複数のタスクがあったら最初の1個にピックアップしたら他のことはやらず、その1つの価値を最大化する」ようにつける
    • 個人的にはこの内容が一番印象的であった
    • 今まで優先度の付け方は、全タスクをどの順番でやるかという考え方でしていた (本にも日本式の考え方、と書いてある)
    • しかし、「何をしないか」を考え、1つにフォーカスすることが大事とのこと
  • 「リスクや間違いを快く受け入れる」、またそのような環境づくり
    • 早く失敗するのが大事
    • 納期に無理やり間に合わせることは、その場では良いかもしれないが長期的には損をすることが多い
    • KPIは定時で無理なく楽に達成できる程度のものにする
  • 仕事の難易度は、以下の4つに分けて、レベル1を増やすことが生産性を高めることに繋がる
    • レベル1 :何もググらずに即座に実装できるもの
    • レベル2:問題をどう解決するかはすぐに思いつくが、具体的な方法は忘れているので、ググる必要があるもの
    • レベル3:自分は解決を知らないが、スパイクソリューション (課題把握のための大まかなプログラム) をしたらできそうなもの
    • レベル4:自分だけでは解決が難しい、もしくはものすごく時間がかかかるもの。

 

以上。まだ30%ぐらいだが、非常に勉強になる内容である。今後も読んでまとめていきたい。

【道具紹介】デスク付きのエアロバイク

www.alinco.co.jp

 

  • デスク付きのエアロバイクを購入し、今日届いた
  • 漕ぎながら、作業が出来るという優れもの
  • 少し使ってみた感想としては以下の通り
    • 音が静かなので、家の中で何時でも漕げる
    • デスクが大きくノートPCぐらいなら余裕で置ける
    • またタブレットなどを立てかける事もできるので、漕ぎながら書籍や動画を見ることが出来る
    • 漕いでいてもデスクが揺れたりはしない
      • またノートPCなどは付属されている紐で固定することも可能
      • 多分、漕ぎながら書類作成なども出来るのではないか
    • 組み立てるのが結構大変
      • 作業数自体は少ないが、本体が重くあちこちに工具を用いて部品を付けていくので、時間かかる
    • 運ぶ際にマットが必須
      • 重いので何も敷かないと床が傷つく
      • 運ぶときは折りたたみ可能
  • 個人的には、勉強の合間に気分転換で本を読んだり、動画を見たりするのでその時間を運動として使えるというのが嬉しい
  • 8段階まで重さを変えることが出来る
    • 鍛える用として使うのにどれくらい有効かは不明
  • 現状としては購入してよかった
    • 耐久性などは今後使っていくうちにわかると思われる