SlideShare a Scribd company logo
モナド概論

    bleis-tift


November 17 2012
モナド概論
モナドハンズオン前座発表

      bleis-tift


  November 17 2012
自己紹介




id:bleis-tift / @bleis
名古屋 Scala / なごやか Scala
Scala が好きです。でも F#のほうがもーっと
(ry
Microsoft MVP for Visual F#
この会の趣旨(だったもの)


  モナドで躓いている人たちに、「モナドって
  こんな感じのものだよ」っていうのを丁寧に
  教える会
  決して「うわ、あの人たちこわっ!」って雰
  囲気にならないような感じ
  より多くの人が「モナドって便利!」って
  思ってもらえたら素敵じゃない?
どうしてこうなった・
         ・・
対象


次のどれかに当てはまる人を一応対象とします。
  何らかの静的型付けの関数型言語でプログラ
  ムが書ける
  モナドを勉強して挫折したことがある
  Maybe モナドくらいなら・
                ・・
分からない所は発表中でも構わずに質問をお願い
します。分かる範囲でお答えします。
モナド
モナドとは


とりあえず、
  型パラメータを 1 つとる型と、
  >>=(バインド) 演算子と、
  return 関数
が出てきたら「モナド」というゆるい感じからは
じめます。
が、しばらく出てきませんので頭の片隅に置いて
おいてください。
Maybe モナド
連続した null チェックのだるさ

こんなコードはだるい。
連続した null チェ   ック
let a = f1 x
if a <> null then
  let b = f2 a
  if b <> null then
    ...
こんなだるいことしてるとどっかでミスる (いわ
ゆるぬるぽ)。
return がある言語だと、return すればいいんじゃ
ね?ってなることもある
途中で return


連続した null チェック (Scala)
val a = f1(x)
if (a == null)
  return null
val b = f2(a)
if (b == null)
  return null
...
うーん、でもやっぱりだるい。
本当にやりたかったことが埋もれてしまっている。
爆ぜろリアル!

俺はこう書きたいんだ!
理想形 1
let a = f1 x
let b = f2 a
...
もしくは・
    ・・
理想形 2
x |> f1 |> f2 |> ...
どちらにしても null チェックなんてしたくない!
                         !!
とりあえず
ぬるぽが起きないようにしましょう。
option 型を定義
type option<’T> = None | Some of ’T

これで string と option<string> が別の型に!
  option<string> に対して string のメソッドは
  直接呼び出せなくなった
  シグネチャに「値が無いかもしれない」とい
  う情報を埋め込めるようになった
  Scala の場合は sealed なクラスとして Option
  を作り、None という case object と Some とい
  う case class を用意
option 型で書き直す
連続した null チェ   ック (再掲)
let a = f1 x
if a <> null then
  let b = f2 a
  if b <> null then
    ...

各関数が option を返すように書き換え
match f1 x with
| Some a ->
    match f2 a with
    | Some b ->
        ...
    | None -> None
| None -> None
全然だめだ!
そこで!
こんな演算子を導入してみます。
>>= 演算子の導入
let (>>=) opt (f: ’a -> option<’b>) =
  match opt with
  | Some x -> f x
  | None -> None
ネストしたパターンマッチ (再掲)
match f1 x with
| Some a ->
    match f2 a with
    | Some b ->
        ...
    | None -> None
| None -> None
Some の場合の処理を関数で表現すると・
                    ・・
こう!
>>= 演算子を使って書き直し
f1 x >>= (fun a ->
f2 a >>= (fun b ->
  ...
))
関数のネストになった!
ネストしたパターンマッチと比べてみる (再掲)
match f1 x with
| Some a ->
    match f2 a with
    | Some b ->
        ...
    | None -> None
| None -> None
再確認
>>= 演算子 (再掲)
let (>>=) opt (f: ’a -> option<’b>) =
  match opt with
  | Some x -> f x
  | None -> None

ネストしたパターンマッチ (再掲)
match f1 x with
| Some a ->
    match f2 a with
    | Some b ->
        ...
    | None -> None
| None -> None
OK ですか?
色々書き換えてみる

元のコード (再掲)
f1 x >>= (fun a ->
f2 a >>= (fun b ->
  ...
))

ネストを取り除く
f1 x >>= (fun a ->
f2 a) >>= (fun b ->
f3 b) >>= (fun c ->
  ...
)
最後の閉じかっこが増えなくなった!
色々書き換えてみる

元のコード (再掲)
f1 x >>= (fun a ->
f2 a >>= (fun b ->
  ...
))

F#の本気
f1 x >>= fun a ->
f2 a >>= fun b ->
f3 b >>= fun c ->
  ...


括弧?何それおいしいの?
色々書き換えてみる

元のコード (再掲)
f1 x >>= (fun a ->
f2 a >>= (fun b ->
  ...
))

関数を直接渡す
x |> f1 >>= f2 >>= ...
お・ ?
 ・・
理想形 2 にそっくりや!(再掲)
x |> f1 |> f2 |> ...
理想 1 も実現したい!
F#や Scala や Haskell ではできるんです!
それぞれ、
   F# ・・・コンピュテーション式
   Scala・ for 式
         ・・
   Haskell・ do 式
          ・・
という (モナド用の) 構文が用意されています。
>>= 演算子はそれぞれ、
   F#・ Bind メソッド
       ・・
   Scala・ flatMap メソッド
         ・・
   Haskell・ >>= 演算子
          ・・
に対応します。>>= 演算子以外に・         ・
>>= 演算子以外に必要なもの



  F#・ Return メソッド
      ・・
  Scala・ map メソッドとユニットコンストラ
       ・ ・
  クタ
  Haskell・ return 関数
         ・・
が必要になります。
横道:Scala の map メソッド


       Option[T] に T => U な関数を適用し、
       Option[U] を作るメソッド
       flatMap とユニットコンストラクタがあれば
       作れる
// Option[T] のメソッド (this は Option[T])
def map[U](f: T => U): Option[U] =
  this.flatMap { x => Some(f(x)) }
                        1
       にも関わらず必要なのは効率のため?



  1
      return をそのまま提供するのが色々面倒だからっぽい?
本題に戻って
理想 1 の実現に必要なクラスを用意します。
MaybeBuilder
type MaybeBuilder() =
  member this.Bind(opt, f) =
    match opt with
    | Some x -> f x
    | None -> None
  member this.Return(x) = Some x
let maybe = MaybeBuilder()

>>= 演算子の定義はこうでした。
>>= 演算子の定義 (再掲)
let (>>=) opt (f: ’a -> option<’b>) =
  match opt with
  | Some x -> f x
  | None -> None
また横道:Scala だと

Option クラスにメソッドを定義することになり
ます。
def flatMap[U](f: T => Option[U]): Option[U] =
  this match {
    case Some(x) => f(x)
    case None => None
  }
def map[U](f: T => U): Option[U] =
  this match {
    case Some(x) => Some(f(x))
    case None => None
  }
本題に戻って
さっきの maybe を使うと・
               ・・
こう書けるようになる!
maybe {
  let! a = f1 x
  let! b = f2 a
  ...
  return 結果
}

理想 1 と比べてみる (再掲)
let a = f1 x
let b = f2 a
...
もうちょっと具体的な例で説明します。
http://d.hatena.ne.jp/mzp/20110205/monad
「db という Map に格納されている”x”と”y”を加
算する」
理想
let db = Map.ofList [("x", 1); ("y", 2); ("z", 3)]

let result =
  let x = db |> Map.find "x"
  let y = db |> Map.find "y"
  x + y

実際
let result   = maybe {
  let! x =   db |> Map.tryFind "x"
  let! y =   db |> Map.tryFind "y"
  return x   + y
}
ざっくりどうなっているか


maybe { } で囲まれている部分が
   let!が Bind の呼び出しに
   (後続の処理はラムダ式で包まれる)
   return が Return の呼び出しに
変形されます。
ちなみに Scala では、return に相当するのは yield
で、for 式の括弧の外に来ます。
こうなるわけです
これが (再掲)
let result   = maybe {
  let! x =   db |> Map.tryFind "x"
  let! y =   db |> Map.tryFind "y"
  return x   + y
}

こう変形される
let result =
  maybe.Bind(db |> Map.tryFind "x", fun x ->
  maybe.Bind(db |> Map.tryFind "y", fun y ->
    maybe.Return(x + y)))

この「ネストを平坦化させる」のがモナド用構文
の便利な所です。
注意!
理想形に似てるからって展開はできません。
これは無理
let result = maybe {
  return (db |> Map.tryFind "x") +
         (db |> Map.tryFind "y")
}
まぁScala の場合は
Scala 版
val result = for {
  x <- db.get("x")
  y <- db.get("y")
} yield x + y

なので大丈夫だとは思いますが。
ここまでのまとめ


>>= 演算子でネストをフラットに
  >>= 演算子の後ろに処理を隠す
>>= 演算子は | > 演算子に似ている
モナド用の構文でより自然に
  実はただの式変形
  プログラマがカスタマイズできるシンタックス
  シュガーてきな
Maybe モナドが何なのか分からなくても、モ
ナド用の構文で便利に使える←大事
State モナド
さて、State モナドですよ


  Maybe モナドはもっとも理解が容易なモナド
  の一つ
  State モナドは理解が難しいモナドの一つ
  ハンズオンで実装するにあたって、混乱しな
  いための知識が必要
  難しいかもしれませんが、数をこなせばその
  うち分かります (そのためのハンズオン)
さて行きましょう!
State モナドとは


モナドのすべてより:
  利用場面:状態を共有する必要のある一
  連の操作から計算を構築する
「再代入なしで、再代入と同じような挙動を実現
する」とかって理解でもよい。
「F#にも Scala にも再代入あるじゃん!何に使う
のさ!」ってのはとりあえず置いといてください。
再代入なしで状態の取得や更新を実現するには



   関数に他の引数と一緒に「状態」も渡す
   他の戻り値と一緒に「次の状態」も返すよう
   にする
   状態のやりくりを頑張る
 だるそう!
実際だるい



自分で状態を管理する
let x, state1 = f1 (a, initialState)
let y, state2 = f2 (x, state1)
let z, state3 = f3 (y, state2)
...
そこで State モナドですよ!
State モナドの型


State 型
// 状態を受け取って、
// 値と次の状態のタプルを返す関数
type State<’TState, ’T> =
  ’TState -> (’T * ’TState)
あれ、モナドって型パラメータは一つだったはず
じゃ?
→状態を表す型を固定化すればいいのさ!
バインドの後ろに何を隠すか

状態の管理を隠しましょう。
StateBuilder
type StateBuilder () =
  member this.Bind(stateM, rest) =
     fun state ->
       let x, nextState = stateM state
       rest x nextState
  member this.Return(x) =
     fun state -> (x, state)
let state = StateBuilder()
バインドわけわかんない><。
Maybe モナドとの共通点を探す
Maybe モナドのバインド
// type Option<’T> = None | Some of ’T
member this.Bind(opt, rest) =
  match opt with
  | Some x -> rest x
  | None -> None

State モナドのバインド
// type State<’TState, ’T> = ’TState -> (’T * ’TState)
member this.Bind(stateM, rest) =
  fun state ->
     let x, nextState = stateM state
     rest x nextState

     Bind メソッドの型 (モナドと関数を受け取り、モナドを返す)
     rest の型 (モナドの中の値を受け取り、モナドを返す)
     取り出した値を rest に渡している
バインドの中を詳しく見てみる
// type State<’TState, ’T> = ’TState -> (’T * ’TState)
member this.Bind(stateM, rest) =
  fun state ->
    let x, nextState = stateM state
    rest x nextState

     stateM は State 型 (なので、関数)
           stateM に状態を渡すと、値 x と次の状態 nextState のタプ
           ルが取得できる
           先ほどのだるいコードはここに相当
     rest は後続処理を表す関数で、戻り値は State 型 (関数)
           rest は元々引数を 1 つ取るため、カリー化された 2 引数関
           数とみなせる
     rest x をそのまま Bind の戻り値として返しただけだと「次の状
     態」が伝播できない
     rest x に「次の状態」を渡してしまい、全体をラムダ式で包み
     State 型に
・
          ・・




狐につままれた感じですかね
実際に実装して処理を追うと理解の助けになりま
すので頑張ってください
使ってみる
state を使ってみる
let result = state {
   let! initVal =
     fun initStat -> (initStat, initStat)
   let x = initVal + 1
   do! fun _ -> ((), x * 2)
   return x
}
let res1 = result 0 // => (1, 2)
let res2 = result 10 // => (11, 22)

バインドの定義はこちら
member this.Bind(stateM, rest) =
  fun state ->
    let x, nextState = stateM state
    rest x nextState
こんなもの使えるかー!
ごもっとも
なので補助関数を定義しましょう!
let result = state {
  let! initVal =
    fun initStat -> (initStat, initStat) // 状態の取得
  let x = initVal + 1
  do! fun _ -> ((), x * 2) // 状態の設定
  return x
}

状態の取得と更新を関数化します。
補助関数
let get = fun stat -> (stat, stat)
let put newStat = fun _ -> ((), newStat)

この補助関数を使うと・
          ・・
こうなります!
state 完全版
let result = state {
   let! initVal = get
   let x = initVal + 1
   do! put (x * 2)
   return x
}
補助関数を定義する前とは大違い。
補助関数定義前 (再掲)
let result = state {
  let! initVal =
    fun initStat -> (initStat, initStat)
  let x = initVal + 1
  do! fun _ -> ((), x * 2)
  return x
}
let res1 = result 0 // => (1, 2)
let res2 = result 10 // => (11, 22)
get と put




なんでアレで状態の取得や更新ができ
るの・ ?
  ・・
バインドの定義と、get や put の定義を追えば
わかりやすいかも
get
     get とバインドの定義
let get = fun stat -> (stat, stat)

member this.Bind(stateM, rest) =
  fun state ->
    let x, nextState = stateM state
    rest x nextState

     stateM が get だった場合
fun state ->
  let x, nextState = (fun stat -> (stat, stat)) state
  rest x nextState

     現在の状態 (state) を弄らずに値と次の状態として使う
fun state ->
  let x, nextState -> state, state
  rest x nextState
続・get
     更に展開すると
fun state ->
  let x, nextState -> state, state
  rest x nextState

     最終的にこう
fun state -> rest state state
     これは何を意味するか?
          x は表に出てくる値を表し、rest は後続処理を
          表す
          表に出てくる値として、現在の状態を渡すこと
          になる
          次の状態として、現在の状態を弄らずに渡すこ
          とになる
          結果、 「値としては現在の状態が取得」できる
          し、状態もいじらない!
put
     put とバインドの定義
let put newStat = fun _ -> ((), newStat)

member this.Bind(stateM, rest) =
  fun state ->
    let x, nextState = stateM state
    rest x nextState

     stateM が put だった場合
fun state ->
  let x, nextState = (fun _ -> ((), newStat)) state
  rest x nextState

     現在の状態 (state) を捨てている
fun state ->
  let x, nextState = (), newStat
  rest x nextState
続・put


     最後までは展開しないけど・
                 ・・
fun state ->
  let x, nextState = (), newStat
  rest x nextState
     これは何を意味するか
          後続処理に値として何も渡さない (() を渡す)
          次の状態として、put 関数に渡された値を使う
          結果、「指定した値で状態を更新」できるし、表
          に出てくる値は生成しない
ここまでのまとめ


バインドの後ろに状態の管理を隠したのが
State モナド
  丁寧に読み解けばなんとなくの理解は得られる
  (と、思う)
  再代入なしで可変な状態を実現できた
補助関数がないとつらい
  get と put
補助関数の動作について
  展開して追ってみた
まとめ?
さて
Maybe モナドと State モナドという異なる性
質を持つ 2 つのモナドを見ました
この 2 つのモナドは、
  bind:
  Monad<’T> -> (’T -> Monad<’U>) -> Monad<’U>
  return: ’T -> Monad<’T>
という 2 つの関数を持つという共通点しかあ
りませんでした (実際にやる処理は全然違う)
様々なモナドが存在し、様々な bind と return
を提供しています
モナドは「何をやるか」は決めず、記法を提
供するだけ
それでは、色々なモナドを実装していきま
しょう!
これから先のこと


モナド自体が何のか?という問いには答えて
いない
  無理><
  そんなことより色んなモナド学ぼう!というス
  タンス
  気になったら調べてみるといいとは思うけど、
  おススメしない
色んなモナドを学ぶためのある程度の道しる
べをつけておきます
  その後は自分で歩けると信じて
モナドのすべて



http://www.sampou.org/haskell/a-a-
monads/html/index.html
英題は「All Abouts Monads」
分かりやすいかどうかは別として、色々なモナドに触
れることができる
エンコーディングは euc-jp で
モナドとモナド変換子のイメージを描いてみた




  http://d.hatena.ne.jp/melpon/20111028/1319782898
  モナド変換子はとりあえず置いといて・                   ・・
  各関数のイメージがよくつかめる
モナドはメタファーではない




http://eed3si9n.com/ja/monads-are-not-metaphors
たとえに頼らずに説明している
プログラムの中からモナドを見つけるための感覚つく
りに
サルでもわかる IO モナド


url

      http://blogs.dion.ne.jp/keis/archives/5880105.html

      http://blogs.dion.ne.jp/keis/archives/5907722.html

      http://blogs.dion.ne.jp/keis/archives/5984552.html
IO モナドを倒すために
モナドチュートリアル




http://www.slideshare.net/tanakh/monad-tutorial
理解できるかどうかは置いておいて、一度一通り読ん
でみる
最後に一つ忠告しておきます




 Wikipedia は見ない方がいい

More Related Content

What's hot

はじめてのKrylov部分空間法
はじめてのKrylov部分空間法はじめてのKrylov部分空間法
はじめてのKrylov部分空間法tmaehara
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
Shuyo Nakatani
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
Yoshitaka Seo
 
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
Ken'ichi Matsui
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)
bleis tift
 
Crfと素性テンプレート
Crfと素性テンプレートCrfと素性テンプレート
Crfと素性テンプレート
Kei Uchiumi
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
narumikanno0918
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
信之 岩永
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
t-sin
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
Norishige Fukushima
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
Kimikazu Kato
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Yuya Unno
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
Yahoo!デベロッパーネットワーク
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
 

What's hot (20)

はじめてのKrylov部分空間法
はじめてのKrylov部分空間法はじめてのKrylov部分空間法
はじめてのKrylov部分空間法
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)
 
Crfと素性テンプレート
Crfと素性テンプレートCrfと素性テンプレート
Crfと素性テンプレート
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 

Viewers also liked

解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
bleis tift
 
F#事例発表
F#事例発表F#事例発表
F#事例発表
bleis tift
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
bleis tift
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
bleis tift
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
bleis tift
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
bleis tift
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
bleis tift
 
ぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLL
bleis tift
 
関数型言語のすすめ
関数型言語のすすめ関数型言語のすすめ
関数型言語のすすめ
bleis tift
 
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
bleis tift
 
自分戦略
自分戦略自分戦略
自分戦略
bleis tift
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
bleis tift
 
輪るビングドラム.NET
輪るビングドラム.NET輪るビングドラム.NET
輪るビングドラム.NET
bleis tift
 
基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料
at grandpa
 
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
Ken'ichi Matsui
 
統計学の基礎の基礎
統計学の基礎の基礎統計学の基礎の基礎
統計学の基礎の基礎
Ken'ichi Matsui
 

Viewers also liked (17)

解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
 
F#事例発表
F#事例発表F#事例発表
F#事例発表
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
 
ぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLL
 
関数型言語のすすめ
関数型言語のすすめ関数型言語のすすめ
関数型言語のすすめ
 
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
 
自分戦略
自分戦略自分戦略
自分戦略
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
輪るビングドラム.NET
輪るビングドラム.NET輪るビングドラム.NET
輪るビングドラム.NET
 
基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料基礎からのベイズ統計学 2章 勉強会資料
基礎からのベイズ統計学 2章 勉強会資料
 
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
 
統計学の基礎の基礎
統計学の基礎の基礎統計学の基礎の基礎
統計学の基礎の基礎
 

Similar to モナドハンズオン前座

Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
時響 逢坂
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
モナドがいっぱい!
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!
Kenta Sato
 
Material
MaterialMaterial
Material
_TUNE_
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
Shinichi Kozake
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
Keiichi Watanabe
 
モナドをつくろう
モナドをつくろうモナドをつくろう
モナドをつくろう
dico_leque
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5
Kenta Hattori
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
Yuichi Adachi
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
Daisuke Igarashi
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
Tsuyoshi Matsudate
 
テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式digitalghost
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
Kazuya Wada
 
MP in Scala
MP in ScalaMP in Scala
MP in Scala
Kent Ohashi
 
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへNaoki Kitora
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
Ouka Yuka
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイドShinta Hatatani
 

Similar to モナドハンズオン前座 (20)

Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
モナドがいっぱい!
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!
 
Material
MaterialMaterial
Material
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
モナドをつくろう
モナドをつくろうモナドをつくろう
モナドをつくろう
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
 
テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式
 
RのffでGLMしてみたけど...
RのffでGLMしてみたけど...RのffでGLMしてみたけど...
RのffでGLMしてみたけど...
 
MP in Scala
MP in ScalaMP in Scala
MP in Scala
 
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイド
 

More from bleis tift

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
bleis tift
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前に
bleis tift
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
bleis tift
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
bleis tift
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
bleis tift
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
bleis tift
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
bleis tift
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
bleis tift
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
bleis tift
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリ
bleis tift
 
SCMBC闇LT資料
SCMBC闇LT資料SCMBC闇LT資料
SCMBC闇LT資料
bleis tift
 
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料bleis tift
 
SCM Boot Camp
SCM Boot CampSCM Boot Camp
SCM Boot Camp
bleis tift
 
Vim再入門
Vim再入門Vim再入門
Vim再入門
bleis tift
 
CIのその先へ
CIのその先へCIのその先へ
CIのその先へ
bleis tift
 

More from bleis tift (15)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前に
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリ
 
SCMBC闇LT資料
SCMBC闇LT資料SCMBC闇LT資料
SCMBC闇LT資料
 
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料
 
SCM Boot Camp
SCM Boot CampSCM Boot Camp
SCM Boot Camp
 
Vim再入門
Vim再入門Vim再入門
Vim再入門
 
CIのその先へ
CIのその先へCIのその先へ
CIのその先へ
 

Recently uploaded

協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
Shinichi Hirauchi
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
Takuya Minagawa
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
iPride Co., Ltd.
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
ssuserfcafd1
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
Seiya Shimabukuro
 
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
Osaka University
 

Recently uploaded (14)

協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
気ままなLLMをAgents for Amazon Bedrockでちょっとだけ飼いならす
 
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT  vol112 発表資料)
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
Microsoft Azureで生成AIを使ってみた話 2024/6/14の勉強会で発表されたものです。
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDDなぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
なぜそのDDDは効果が薄いのか?名ばかりDX案件での経験を踏まえて培った他の思考を交えた現代風?のDDD
 
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
20240621_AI事業者ガイドライン_セキュリティパートの紹介_SeiyaShimabukuro
 
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
生成AIの実利用に必要なこと-Practical Requirements for the Deployment of Generative AI
 

モナドハンズオン前座