RAGを開発してみたい!ので簡単なものでもいいので作ってみよう!part1

大規模言語モデルが出てきてChat-GPTやGemini、Claudeが出てきましたが、“ハルシネーション"は中々解決できない問題ですね。人間でも勘違いや嘘を堂々と言うことはあるのでどっこいどっこいですが、なるべくなら減らしていきたいですね。 そこで出てくるのが"RAG"になります。RAG(Retrieval-Augmented Generation)は、情報検索を組み込んだ生成モデルで、特に自然言語処理タスクでの応用が注目されています。RAGは、大量のテキストデータから関連情報を検索し、その情報を基に関連するテキストを生成します。 というわけで開発手順をChat-GPTとClaudeに聞いてみました。 大体似たような回答になりました。 データセットの準備と前処理 検索エンジンの構築 学習済みモデルの構築 RAGモデルの構築(検索エンジンと学習済みモデルを統合) モデルのトレーニング モデルの評価と調整 という流れになりました。 データセットの準備のほうはできています。私は昔作ったこちらを再利用しようと思いますが、論文やら書籍をダウンロードしたほうが楽だと思います。 というわけでデータセットの準備が終わったので今度は前処理をしていこうと思います。私のデータはPDFになってるので文字を抽出して、不要な文字を削除するところまでやります。 ということでgithubには登録しましたが一部コードをピックアップして # PDFPage.create_pages()を使用してページのリストを取得し、その長さを数える page_count = len(list(PDFPage.create_pages(document))) # スペース、タブ、改行を削除 text = text.replace(' ', '').replace('\t', '').replace('\n', '') # 正規表現を使って他の空白文字を削除 text = re.sub(r'\s+', '', text) 簡単ではありますがページ番号の削除と空白削除を行いましたので、とりあえず次のステップに進もうと思います。何をしたらいいかChat-GPTとClaudeに聞いてみました。 Claude曰く形態素解析や正規化は行わなくてもいいみたいなので、一旦インデックスの作成をやっていこうと思います。ただ色々試行錯誤してやった方が精度が上がりそうであればやろうと思います。 ところでClaudeに聞いたときこのような解答が返ってきたことがありました。野球って何でしょうか?(笑) ということで引き続き開発を進めていこうと思います。この先llamaindeを使うのか他のAPIを使うのか、ベクトルデータベースはどうするのか調べながら考えてみようと思います。ではでは

2024年4月7日

いつの間にか配信されてたOmega Crafterをプレイしたら2日で前回のプレイ記録を超えていた!なんなら9割終わった

土日にKaggleをやらずゲームをやってたのですが早期アクセスが開始されたOmega Crafterで遊んでました。ストアページはこちら ちなみに前回は2面のボスを倒し切れず終わりました。武器の強化は十分だったのですがレベルアップが恐らく足らずクリアできませんでした。ただ世界の端までは見てきました。 今回アーリーアクセスで異なった点や遊んだ内容を少し話していこうかと思います。 そもそもOmega Crafterというゲームの流れとしては クラフトとレベルアップ ダンジョン?でボスを出現させるアイテムの入手 ボスを倒して世界レベルの上限を開放する 世界レベルを上げる ※世界レベルは"データアナライザー"というものに不要になったアイテム等を与えることでレベルを上げることができます。 という流れになります。ストーリーはほぼないのでひたすらクラフトとアイテムの収集を繰り返していきます。NPCも確認できる範囲ではいません。 そして他のクラフトゲームと異なる点は"グラミー"という存在です。グラミーは指示を出すことで自動で作業を行ってくれます。クラフトはもちろん、農業、鉱業、林業もこなせます。そしてグラミーへの指示がローコードで指示をするというのが特徴です。 このゲームはクラフトゲーム×プログラミング(ローコード)を組み合わせたところが特徴でゲームをやりつつプログラミングを知ることができます。勉強できるとまではいかないかもですが、こんな感じで作って動いてるんだなと知ることはできると思います。 長くなりましたがここまでがOmega Crafterの内容になります。 次に異なった点ですね。世界レベルの上限や敵の種類、クラフトの種類とかは増えていますね。この辺は想定通りかと思います。 これ以外だとスキルが増えていますね。主人公はジャンプ系と落下時ダメ軽減、視野拡大、グラミーは回復系が増えています。このジャンプ攻撃は強く普通の攻撃よりも大きなダメージを与えられます。炎上などの追加攻撃は入らないみたいですが。敵の攻撃を回避しつつ攻撃となることもあります あとは無限レベルアップが多分できなくなったと思います。1つ目のボスを出すための場所に敵をリポップさせるオブジェクトがあるのですが、以前はここでガードしつつグラミーが倒すことで永遠とレベルを上げることができました。今回は気づいたらなくなってたので、できなくなったんだと思います。 私が気づいたのはこのあたりですね。 次はざっくり攻略について書こうと思います。 攻略としては"探索"と"討伐"と"自動化"のパートに分かれると思います。 探索についてはとにかく敵を倒してレベルアップしつつクラフト用のアイテムを集めていく必要があると思います。それからダンジョン内の宝箱からアイテムを拾うことですね。スキルの割り振りはこんな感じ とにかくダッシュ時のスタミナ減少は必須ですね。後は2段ジャンプとインベントリ、視野拡大はどちらでも大丈夫です。それから攻撃よりは防御に振ったほうがいいですね。やられると経験値がなくなってアイテムもその場に落としちゃうので回収が面倒です。 食事は必須になります。体力とスタミナが増えます。場合によっては攻撃や防御にもバフがかかります。オレンジが体力で水色がスタミナです。 食事前 食事後 後は覚える必要はないですが崖を上るときにジャンプをすると早く登れます。スタミナには気を付けないと落ちてやられてしまいます。 次は討伐ですね。 レベルアップもある程度して装備が十分に整ったらボスに挑みましょう!必要なのはダンジョン内にある"封印"というアイテムです。1面は2つ、2面は3つ、3面は4つ必要になります。 それからボスは1度雑魚を召喚してきます。グラミーが生きていれば楽ですが、いない場合は苦戦を強いられます。弓矢を装備して避けつつ、各個撃破すると楽になるとは思います。3面では"爆発矢"があるので持っていくことをおススメします。 また大型ボスの特徴として顔面が弱点になります。その時におススメになるのがジャンプ攻撃になります。とは言えリスキーなので腕に自信がなければヒット&スウェイが基本戦法になります。 さらに腕に自信があれば2段ジャンプ攻撃で頭上に乗ることはできます。乗ってる間多少攻撃は来ないので矢で打ち放題になります。通常攻撃は当たらないこともありますし、ジャンプ攻撃だと落ちることもあります。 こちらも探索と同様食事は必須です。走って時間を稼ぎつつ回復したり、ローリングで攻撃を避けることもありますので体力とスタミナは欲しいですね。余裕があればバフがかかる食べ物もおすすめです。 ちなみに3面まで行けばエンチャント機能が解放されて装備に特殊効果を付与できます。体力や攻撃力、体力、スタミナなど効果は色々です。ぜひ試してみてください。 最後に自動化についてです。 このゲームの特徴でもあるローコードを使った作業の自動化ですが、基本的には標準搭載してあるものをえ十分対応できます。 クラフトはもちろん、農業、鉱業、林業等も基本搭載しています。では自分で作るのはどんな時か?自動化した時よくこんな場面に遭遇します。左は全く拾われないアイテム達、右は必要なところに別の素材が入ってるアイテム 全く拾われないアイテム 間違えて入れられた樹皮 こんな状況がたびたび発生します。左の方は気づいたらこうなっており、止めた後こっちで回収してきれいにして、クラフトしたらまた足りなくなって、再度作業を指示したら散らかるの無限ループに入ったりします。 右はクラフトで必要な素材が別のクラフトで作られるものだとして、その素材が足りなくなったりすると発生することがあります。何を言ってるかわからないかと思いますが、とりあえずクラフトで使用するコンテナを共通にしてればいずれ起きます。 このような状況を避けるためにはコンテナの中の数をカウントすると避けられます。マルチコンテナでなければコンテナの中のアイテムの種類は1つだけですので、“コンテナの中身が1以上であれば作業を行う"という判定を入れてあげるとよいです。 上図では長いですがやってることはコンテナの中がなくなったら別の加工台で作業をする、その加工台に必要な素材のコンテナの中がなくなったら別の加工台で作業をする、といった処理を流しています。 まあ作るのも大変だし、処理はシンプルであるほどいいものだと思ってるので色々やりすぎるのはおすすめできません。グラミーもたくさん召喚できますのでグラミーごとに必要なクラフトや作業を任せるのが一番だと思います。 それでも散らかったりするのが嫌であればコンテナの中の数で判定を行うとだいぶストレスは減るかと思います。他にも面白そうな処理はあるのでぜひいろいろ試してみるのもいいと思います。 最後に今の私の状況ですが表のボスは全て倒し切り世界レベルも全て解放し終わってます。そこでまだ9割という話に繋がるのですが、残ってる作業としてはマップ埋めとバトルシミュレーターになります。マップ埋めはまだまだですね。探索の仕方が良く性格に出ています(笑) 後はバトルシミュレーターですね。こちらは3面のボスと同等以上の強さを持ったボスと戦えます。敵はこれまでのボスの強さが強化されたもので戦闘パターンはほぼ同じです。アイテムに必要な素材は難しくないですが、段階的に倒す必要があります。 またもらえる素材や装備もあってこちらを強化していくことをできます。強化するにはボスを倒した時にもらえる素材が必要なので少し大変そうです… 以上で大体のことは説明できたと思います。作業の自動化を試行錯誤できますし、興味があればぜひやってみてください。ストーリーはないのでそこの面白さはないですが… それでは別のゲームで、ではでは。

2024年4月3日

やっていたKaggleのコンペが終わったので少し振り返る

私が参加していたコンペ(こちら)が終わったので少し振り返ってみようと思います。 一応私の経歴を軽く話すとデータサイエンティスト的な仕事をしつつも予測や分類自体はしたことなく、データセットの作り方や加工の作業がメインでpythonに関してはある程度分かっているという状況です。 そのうえでG検定やE資格を取得済みなので、機械学習や深層学習の知識はある程度ある形でKaggleを始めて挑んでみました。 定石としてタイタニックを触るべきですが、タイタニックのランキングを見てもつまらないので今開催されているSwagやKnowledgeと呼ばれるタイプのコンペに参加してみることをおススメします。 こちらの本でも言及されているのですがどうもタイタニックのデータは初心者向けではないみたいです。初心者を抜けた人向けなイメージです。 それはさておき今回のコンペでは一旦自身で加工してみてモデルを作って提出をするという流れをやってみました。 そこまでは前回のブログでも書いてました。その後ですが他の人のコードをを見て、Chat-GPTに解説してもらって分からない点を質問するということをひたすら繰り返してました。 いくつかピックアップすると ワンホットエンコーディングした時、出現回数が最も少ないカラムを削除していた。なぜ削除するのか? テストデータセットの全行数に対してユニークな値の割合が5%未満のカラムを取得するのはなぜですか?どのような意味がありますか? 特徴量間のピアソン相関を計算するのはなぜか? Optunaの研究(study)を最適化とはどういう意味か? という感じでたくさんの質問を投げてみました。その後帰ってきた返答に関してわからなかった部分もさらに深堀して聞くということを繰り返していました。 そこで理解した点としては ユニーク値が少ない値に関してはワンホットエンコーディングを行うのが有効←その前にやることがある 特徴量を減らすには全体行の5%未満の値でもいいが、クロスバリデーションで特徴量の有無を見てモデルの評価を行ったほうがよい ヒートマップは線形関係に関しては有効だが非線形関係には向いてない ワンホットエンコーディングした際、訓練データまたはテストデータ片方にしかないデータが存在することがあるので、1つにまとめるアプローチがある Optunaを使ってハイパーパラメータの最適化を行える 私の中ではヒートマップで各特徴量の相関を見たほうがいいと思っていたのですが、線形関係であれば見るべきであって、非線形関係であれば意味は少ないというのは新しい発見でした。よく考えればわかることではありますが(笑) それからクロスバリデーションで特徴量の有無によってモデルの評価と比較をすることができることは知りませんでした。クロスバリデーションはただデータセットを分割して検証をするだけで、特徴量の有無まで比較できるとは思ってませんでした。 ここで私のコンペは終了しました。上記の気づきをコードに落とし込むことができませんでした。上の解説や質問と返答の理解に時間を費やしてました。まあ土日はゲームをしてたので結局やらずに終わっただけですが… コンペが終わった後のスコアとディスカッションも見てたのですが、public1位の人がprivateでは200位台になってたりしてそんなこともあるのかと思いながら見てました。 ちなみに私は8個ほど順位を落としてました。そこまで熱心にデータの加工やパラメータの調整をしてないので気にしてないですが さてこのコンペが終わったのでまた次のコンペにも挑戦しようかと思います。まだSwagかKnowledgeに挑戦してみます。また現場で画像系のAIを作るみたいなので画像コンペにも参加してみようと思います。果たして役に立つのか不明ですが また今回の解説だったり質問の返答などは正しいとは限らないのでもう少し精査しようと思います。少しづつでも確実に自身の知恵としていきたいですね。ではでは

2024年4月1日

最近の生成AIを3つほど試してみたよ!

OpenAIから"Sora"のお披露目があり、夏に"GPT-5"がでるという発表がありましたね。 最近の生成AIはすごいなあと思いながら過ごしてますが、たまたま見つけた動画生成AI2つと音楽生成AIを見つけたので試してみました。全てGoogleのアカウントアあれば無料で試せますので興味があれば試してみてください! まずはPixVerseですね。テキストから動画を生成できます。時間は4秒だけですが一応できます。少し触ってみましたが思ったような動画を作るのは大変そうです。 このときは"Giant bee stings bear"というプロンプトを入れてみました。想定とは違いますが欲しい物体は出てきましたね。 次の動画生成AIはHaiperです。こちらでも同様のプロンプトをいれてみました。熊が出てこず蜂が前面に出てきて、人によっては嫌悪感を抱くかと思いますのでリンクだけ貼っておきます。興味があれば見てください。こちら 蜂が蜂を食べてるみたいな動画でそれも不気味なんですよね。こちらは2秒だけですがPixVerseよりも精度や解像度はよさそうです。いいプロンプトを見つけてみたいものです。 最後は音楽生成AIのSunoです。入れてみたプロンプトは"A giant bee stings a bear in anger and rejoices when it is repelled.“になります。感情を入れてみました。 できた音楽は2つになります。これとこれです。生成されたサムネはよくわかりませんが喜びを表した音楽ができました。また、歌詞も出ており英語で歌もついています。2つの歌詞は同じですが音楽が異なるのですごいなと感じましたね。ちなみに歌詞は下記 [Verse] In the forest, giant bee is on the prowl (oh yeah) Buzzin' 'round, lookin' for some mischief now (oh-oh) Spots a bear, thinks it's time to have some fun (oh yeah) Stings it hard, the battle has just begun (woo) [Verse 2] But the bear retaliates, swipes with all its might (oh no) Giant bee is repelled, takes flight into the night (oh-oh) Feelin' the sting, buzzing with adrenaline (oh yeah) But still it's jumpin' back, ready to sting again (woo) [Chorus] Buzzin' bee, buzzin' bee, flying wild and free (oh yeah) Stingin' bear, stingin' bear, a rivalry we see (oh-oh) Buzzin' bee, buzzin' bee, never gonna run (woo) Keep on buzzin', keep on stinging for fun (oh yeah) こんな感じで色んな生成AIを触ってみました。他にも日本から出た画像生成AIのAkumaでしたり、Sakana AIという低コストで精度が高いモデルが作られたりしています。 ...

2024年3月28日

生成AIのさらなる進化と今後の仕事について

最近Inputが出来てないな~と思ったので色々調べてみたところこの資料を見つけました。 ざっくり内容を話すと生成AIが労働へ及ぼす影響や知識の獲得、またその後の働き方について書かれています。せっかくなのでChat-GPTとClaudeにも要約してもらいました。 こちらではもう少し細かく要約されたものがありますので興味があれば見てください。 現在の生成AIでもいろんな職業に影響を与えていますが、この資料では将来的に膨大な知識が求められる職業にも影響があるという話です。AIを含むエンジニア系全般はもちろん科学者や技術者も対象です。 今のプログラマーだったりデータサイエンティストも頼ったほうがよいものができやすいと思います。私もちょくちょくコードの書き方を聞いたりしてます。 そんな生成AIが所謂 “業務知識” を持つようになったら労働を代替してくれるという話ですね。 とはいえ全てを任せるわけじゃなく最後の確認は必要だと思いますが。 ただ、最後の確認であればPLレベルの人がいれば十分で、ただのプログラマーやデータサイエンティストは不要になるのは間違いなさそうです。 他に必要になるのは人間同士の調整をする役目の人ですかね?営業とかでしょうか この話を聞くと今のままではいずれ職がなくなるんだなと考えられますね。数年位であれば大丈夫でしょうが、10年20年先もまだ働く気がするのでそうなると先を考えて行動しないといけないですね。 ブルーカラーの職業も最近はロボットが出てきているので代替されそうな気もしますが、人間の体のつくりは割と凄くて8時間動き続けても故障をしないものです。 ただ、ロボットなどの機械は部品が摩擦などで擦れてくるので長期的には向かないらしいです。そう考えたらまだ大丈夫な気はしますね。 一応金属も傷つけられたとしても時間をかけて回復するらしいのですが、動植物ほど早くなさそうです。そう考えるとブルーカラーがいいですかね?農業であれば食べ物も困らなさそうです。酪農もよさそうですがコストが高そうです。不動産とかもいいんですかね?気にはなってるんですが… そんな感じで将来のことを考えさせられる資料でした。私は将来的に人間は全員ニートになってほしいと思ってるんですが生きてるうちに来ないですかね?ではでは

2024年3月26日

たまにはゲームに夢中になってだらけてもいいんじゃない?

ここ最近はInputはそこまでやらず、Kaggleを触っていたのですがスコアが上がったことで少し満足してゲームのほうに夢中になってました。それもスマホゲー(笑) スマホゲーはメインのソシャゲーがあるのですが、それとは別のゲームやってました。広告に出るようなゲームですね 最近は飽きたのでまたKaggleに戻ろうと思ってブログを書き始めたのですが… ちなみにやってたのはほりドリ(iPhone版とAndroid版)とマージサバイバル(iPhone版とAndroid版)です。興味があればどうぞ ざっくりと2つのゲームを話すとほりドリは ドリルを使って地面を掘る 設計図と鉱石を入手する 新しいドリルを作る という流れで進めていきます。広告も少なくてスマホゲー特有の体力とかもないので、夢中になってやってました。特に爆発が楽しくて進むたびにどんどん爆発していって、資材は貯まり道も広がって楽しかったですね。1日ほどでしたが もう一つのマージサバイバルは エネルギーを使って資材を集める 必要があれば資材同士を結合して上位の資材にする 必要な資材が貯まったらストーリーが進む という流れです。こちらも広告をみるタイミングは少ないですが体力性なので使い切ったら待つ必要があります。大体2分で1回分のエネルギーが必要で100回分(200分)まで貯められます。 どちらも夢中になってやってしまってほぼ何も手がつきませんでした。しょうがないこんな日もありますし、1日で飽きたのでまあいいかという感じです。 私はSteamやVRもやってますが、最近は触ってないので何か機械があったタイミングで触りたいですね。転職や引っ越しとか 新卒の時はデータサイエンティストにつきたいと思ったのですが、今は他の職業に就きたいですね。AIに関するものもよさそうですが、ロボット系やエネルギー系も熱くなりそうですね。 No Game No Life! ではでは

2024年3月24日

Kaggleのスコアを少しずつ上げていってる話

前回から4日ほど空いてしまったのですが、Kaggleでどうやってスコアを上げるか四苦八苦してました。 そもそも前のスコアが低すぎたので少し改善するだけで上がるかなと思ってたのですが、なぜか上がらず少し結果を見てたら自分のコードミスだったというオチです(笑) 前回の予測コードがこちら で修正したコードがこちら for文を使って目的変数が変わるたびモデルの学習を行った後、予測を行っています。ちなみに私は訓練データを8:2に分割して実行しています。 前の時は全ての目的変数の学習が終わったとモデル予測を行っていました。本来であれば目的変数1つに対して学習して予測を行うのですが、全て学習した後予測してたので最後の目的変数の学習をしたモデルになってたので、想定していた結果にはならなかったみたいです。 というわけで修正した後のスコアがこちら すごい!だいぶ上がった!というかこれが普通のスコアっぽい(笑) よくなったので今度はもう少しデータと向き合いつつ、より良い加工方法とモデルの作り方を見てみようと思います。またDiscussionを見つつ、他の人のNotebookを見てみました。他人のコードをChat-GPTに解説してもらいつつ、不明な点を聞いてみようと思います。 余談ですが何もしないときとワンホットエンコーディングを行った時の結果を見てみます。AUCが上がったものもあれば下がったものもありますね。大幅に改善されたわけではないので、元のデータに対して加工したほうがよさそうです。外れ値とか入ってるかもしれないですね。 というわけでKaggleいろいろ試してるという話でした。ではでは

2024年3月22日

Kaggleをとりあえず触ってみて少しづつ予測や分類を理解していくぞ!

最初の段階でタイタニックを触ることが普通かもしれませんが、この書籍でも触れてますがタイタニックは軽く触るくらいでいいと思います。 順位もあまり動かないですし、モチベも続かないと思うので他のコンペに早く参加したほうが楽しい気がします。 私は今開催されているこちらのコンペに参加しています。こちらのコンペは基となったデータから似たような特徴量を作成したものになります。中身はテーブルデータなうえに “id” と数値データのみなのでとっつきやすいと思います。 とりあえず中を見てみます。 <class 'pandas.core.frame.DataFrame'> RangeIndex: 19219 entries, 0 to 19218 Data columns (total 35 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 19219 non-null int64 1 X_Minimum 19219 non-null int64 2 X_Maximum 19219 non-null int64 3 Y_Minimum 19219 non-null int64 4 Y_Maximum 19219 non-null int64 5 Pixels_Areas 19219 non-null int64 6 X_Perimeter 19219 non-null int64 7 Y_Perimeter 19219 non-null int64 8 Sum_of_Luminosity 19219 non-null int64 9 Minimum_of_Luminosity 19219 non-null int64 10 Maximum_of_Luminosity 19219 non-null int64 11 Length_of_Conveyer 19219 non-null int64 12 TypeOfSteel_A300 19219 non-null int64 13 TypeOfSteel_A400 19219 non-null int64 14 Steel_Plate_Thickness 19219 non-null int64 15 Edges_Index 19219 non-null float64 16 Empty_Index 19219 non-null float64 17 Square_Index 19219 non-null float64 18 Outside_X_Index 19219 non-null float64 19 Edges_X_Index 19219 non-null float64 20 Edges_Y_Index 19219 non-null float64 21 Outside_Global_Index 19219 non-null float64 22 LogOfAreas 19219 non-null float64 23 Log_X_Index 19219 non-null float64 24 Log_Y_Index 19219 non-null float64 25 Orientation_Index 19219 non-null float64 26 Luminosity_Index 19219 non-null float64 27 SigmoidOfAreas 19219 non-null float64 28 Pastry 19219 non-null int64 29 Z_Scratch 19219 non-null int64 30 K_Scatch 19219 non-null int64 31 Stains 19219 non-null int64 32 Dirtiness 19219 non-null int64 33 Bumps 19219 non-null int64 34 Other_Faults 19219 non-null int64 dtypes: float64(13), int64(22) memory usage: 5.1 MB 中身は数値データで最後の7カラムが予測対象の列になります。それから欠損値はないみたいなので、欠損値については考えなくてよさそうです。 ...

2024年3月18日

仕事でミスが発生した場合、何を考えるか?どう対応するか?

人間が管理・作業をする以上ミスをするものだと思います。その度に反省して再発防止策を考えてシステム的にミスが起きないようにします。それを怠ったら同じミスが再発するわけですが… ちなみに私はよくミスを発生する人間だと自負しています。そんなこと自負するなと思いますが、学生のころからよくやっていたので折り紙つきです。 そう考えると短所は注意散漫になるのでしょうか?ケアレスミスや誤字脱字、表の線引きがずれてる等細かいところはよくあります。(毎日ではないですがレビューの時は6,7割) エンジニアであれば過去のプログラムを参考に現行のプログラムを作ったり修正したりするでしょう。その過去のプログラムの一部が間違っていてかつ自身が作ったということが多いです。頻度は1年に1回ぐらいだと思いますが…多分 ケアレスミスや誤字脱字はまだしも、プログラムの仕様が異なるは大事です。想定されていたものと異なるものができているわけですから。データを作る人だったら一部のデータが想定されたデータと異なるというとこでしょうか。 お客さん側から指摘されれば謝罪→修正→リリース→再発防止策という流れで進むでしょうが、お客さん側も気づかず、自身が気づいた場合はどうでしょうか?さらにそれが本人が作った物であればどうするか?が本題です。 他人が作ったものの場合は本人に直接聞くのが一般的だと思います。その後、本人からチームの人に共有してもらうのが波風立たないですね。勝手に"こんなミスがありました"という話をするとその人のメンタルに大ダメージを負っちゃいますので… それでは自身が作ったものの場合はどうでしょうか?上司やチームの人の相談しますか?見なかったふりをしますか?誰にも言わず修正しますか?私は葛藤したのちに相談するタイプです。隠蔽の考えがよぎるのですが、先々を考えるとまずいので相談します。 相談については メリット:将来他の人に迷惑が掛からない デメリット:信用が下がる、怒られる、状況によっては自社に損害が発生する まあ自身へのメリット少ないですが将来膨らむ迷惑や負債は潰せますね。デメリットの2つはまだしも損害発生は大事ですね。どうしようもないものはどうしようもないですが 見なかったふりについては メリット:近々自身が辞めるもしくは抜ける予定ならば保身になる デメリット:将来他の人に迷惑をかける、ばれないかなどでメンタルがやられる 所謂 “爆弾” や “負債” を残す形になります。保身のために言わない人も多そうですが、サイコパスでなければずっと頭をよぎりますし、他の人に押し付けるのはどうかと思います。周りがそんな人たちばかりなら速攻辞める職場ですね。 次にしれっと修正するついては メリット:ばれなければ誰にも迷惑をかけない デメリット:記録に残さなければ同じミスを再発する可能性がある そもそもしれっと直せるような状況はあまりない気がしますが迷惑を一番かけない形になる気がします。ただ、同じミスは再発する可能性が高いですね。そこで終われば大体忘れるものですから。 いずれにせよ障害の対応になるので自身にとっていいことは起こらないのですが、他の人にどれだけ迷惑をかけるかが変わるので正直に話しましょう。 この話をしたのは直近で自身のミスに気付いたからですね。迷ったんですがしっかり話して、リカバリーと再リリースを早く実施して対応したので将来的に良かったと思います。自身の評価は下がった気がしますけどね(笑) まあ反省はしても落ち込まずどうしようもなくなったら “辞めてやるし、別のいい環境で頑張るわ!” くらいの心持をしましょう!誰にでも何とでもできますので、多分。ではでは

2024年3月15日

E資格が終わったので実践としてKaggleにも挑戦してみよう!

G検定に続きE資格も無事取得できたので今度は統計検定準1級やDS検定になるかと思いますが、一旦受験関係はやめてKaggleに挑戦しようと思います。 英語という観点では少し不利ですが、名前はよく知られてますし英語の練習にもなるかもしれないのでこちらを選びました。日本語が良ければSIGNATEというコンペがあります。 まずKaggleとはなんぞやということですが、競技プログラミングのデータサイエンティスト版ですね。要件を確認して、入力データを見て、予測や分類を行い、csvファイルを提出してスコアを競うという流れですね。 Kaggleの始め方は該当のページに飛んでアカウントを作成してください。メールアドレスまたはGoogleアカウントですぐに始められます。 そもそもKaggle以前にプログラム自体に触ったことがない人もいるかと思います。そんな人はpythonの勉強から始めましょう!こちらからKaggle内で勉強することもできます。pythonやpandasはもちろん、データの可視化、機械学習や深層学習、SQLも勉強できます。 プログラムが書けるようになったらいよいよ挑戦することになると思いますが、データ分析で一番重要なのはデータへの理解と加工だと考えています。 どんなデータが使われているか?、どの変数がどんな型になっているか?、外れ値や欠損値が含まれているか?、各変数の相関関係はどうか?など確認すべき点は多いです。また、そのデータに対する加工が適切かどうかも考えないといけません。欠損値は削除すべきか埋めるべきか?外れ値としてみるべきか? 8割くらいがデータへの理解と加工が重要だと思うのでこちらをさらっと流し見するといいかもです。ただ、プログラムはほぼ書いておらず図の見方やデータの確認方法がメインなので流し見でいいかと思います。 Kindle Unlimitedであればただで見れるので入っておくことをおススメします。サブスクで月額300円くらいですし、他のためになる本やくだらない本も読めますので本を読むいいきっかけになると思います。ただで見れるので細かく見ずわかってる場所は飛ばして、さらっと見ていきましょう。 次はこちらですね。たくさんの人がおすすめしてますが、データの加工方法からモデルの作成と評価、細かいポイントまで記載しています。私もまだ読み始めですが、目次を見た限りだとこれを見ればデータ分析が十分できると思います。画像や自然言語処理、GANなどは触れてないですが… 本を読みながらKaggleを触っていくのがいいと思います。よくタイタニックがおすすめされていますが、ランキングはほぼ変わらない上にやる気に繋がりにくいので今開催されているコンペに出るといい気がします。 賞金のほうでもいいですし、SwagやKnowledgeでもいいと思います。最初は上を目指さず、自身でいろいろ試して解答を提出して、他の人のコードを覗いたりDiscussionに参加したりするといいと思います。思わぬアイデアが埋まってたりしますし、知らないですが… とまあこんな感じで参加しようと思います。まずはテーブルデータのコンペから参加してみて、ゆくゆくは画像系とかやってみたいですね。ではでは

2024年3月13日