Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ネットワークエンジニアがニューラルネットワークをやってみた
Search
nori
April 22, 2017
Technology
3.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ネットワークエンジニアがニューラルネットワークをやってみた
ネットワークプログラマビリティ勉強会#12の資料です
https://network-programmability.connpass.com/event/54303/
nori
April 22, 2017
More Decks by nori
See All by nori
NetOps NG
norin
0
870
Other Decks in Technology
See All in Technology
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
630
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
1
470
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
450
Claude Code本って、 読む必要あるの?
oikon48
2
400
AIで開発は速くなったのに、なぜ現場は楽にならないのか 〜あなたの組織のボトルネックを突き止めるワークショップ〜
jacopen
1
330
20260912_スクフェス三河
kgnkhkr
0
290
GoCon2026 - Open Source, Open World
sanposhiho
4
3.2k
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
230
20260912_スクラムにジェネラリストは必要か
ryugen04
0
350
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
680
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
330
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
150
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
Making Projects Easy
brettharned
120
6.7k
Test your architecture with Archunit
thirion
2
2.4k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
620
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Paper Plane
katiecoart
PRO
3
53k
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Transcript
ωοτϫʔΫΤϯδχΞ͕χϡʔϥϧωοτϫʔΫΛͬͯΈͨ Network Programabilty #12 @_norin_
ࣗݾհ なまえ こじま ただのり おしごと 元インフラ屋、域LAN作ったりとか twitter @_norin_
✦ 神経細胞を計算モデル化したもの ͬ͘͟ΓχϡʔϥϧωοτϫʔΫ ೖྗ ग़ྗ Y Z [ z =
w1 ɾ x + w2 ɾ y X X ͜ΕΛΈ߹Θͤͯෳࡶͳͷʹͨ͠ͷ͕ ΠϚυΩͷχϡʔϥϧωοτϫʔΫ
//ͷ͔͍ͭͲ͜Ζ ✦ 分類 画像のタグ付け(検索エンジン) ✦ 判別 手書き文字判別(Tensorflowのチュートリアル) きゅうりの等級分け ✦ 予測
天気、気温など過去データからの未来予測 既存文章から新規文章の生成
ωοτϫʔΫతظʁ ✦ フローからDDoS判別 ✦ 障害予測 この辺りは実データでやらないとおもしろくない そのうちどこかのIXかIDCさんが発表してくれるでしょう 期待の目
ຊͷϝχϡʔ ネットワークエンジニアなら一度は作る ɹɹ1JOHʹԠ͢ΔχϡʔϥϧωοτϫʔΫ "シェフのきまぐれICMP Responder
͜͜Λ//Ͱ࡞Δ 192.168.0.1→192.168.0.2のICMP Echoに対しReplayを生成する ߏ 192.168.0.1 192.168.0.2 Echo Reply
σϞ
݁Ռ "γΣϑ͕ؾ·͙Ε͗͢·ͨ͠ //ؤݻΦϠξͩͬͨ
✦ フレームワークはTensorFlowを利用 ✦ 学習データはPingの実データをキャプチャしたもの ✦ パケットを1514バイトの配列としてみなす ✦ 先頭42バイトが入出力データ Ethernet/IP/ICMPヘッダ 計算量とペイロードは変化しない・変化して欲しくないため
ͭͬͯ͘Έͨ// &UIFS)FBEFS *1)FBEFS *$.1)FBEFS 1BZMPBE 14byte 20byte 8byte
ͭͬͯ͘Έͨ// ӅΕͻͱͭ 42コ
ͭͬͯ͘Έͨ//ˌ ……… ӅΕºશଓ
ͭͬͯ͘Έͨ//ˌ ࡾっぽいナニカ
ύέοτ͕ᨅΔ༁ ✦ 元データのバリエーション不足 ✦ 192.168.0.1→192.168.0.2のPing実データから教師データを自動生成 ✦ L2やルータ越えだとMACアドレスも固定される ✦ データ数は多いが変化の少ないデータばかりに。。。 ✦
DDoSなどの実フローか自動生成でもバリエーションが必要 EtherDst EtherSrc IPDst IPSrc ID Chksum ICMP chksum Payload มԽ͢Δͷ͚ͩ͜͜
ύέοτ͕ᨅΔ༁ ✦ 教師データのバリエーション不足による部分最適化 ✦ 誤差関数がイマイチ チェックサムくらいが誤差と期待していた ✦ そもそもバイト単位での誤差ゼロが期待値 パケット全体で誤差がゼロでは意味がない ✦
(推測)バイト計算の差が影響しているかも 0x7Fと0x80の差分と127と128の差分の違い 精度と桁が実数とバイトで異なる ✦
ύέοτ͕ᨅΔ༁ ✦ NNのネットワーク構成が不適切 ✦ アドレス入替、ICMP Code書き換え、チェックサム として隠れ層5で設計 ✦ 線形部分が多く、多層の意味をなさなかった 非線形のチェックサム部のみで活性化関数を利用すべき?
✦
1JOHΛฦ͢ʹ 1)Ethernetアドレスを入れ替える 2)IPアドレスを入れ替える 3)IPヘッダ内の設定(�ID、TTL、etc ) 4)IPチェックサム設定 5)ICMP Codeの設定(Reply) 6)ICMPチェックサム設定 7)送信
代数的に考えてみる アドレスの入れ替え 単純な線形変換 νϣτ͘ͳΔ [ 0 1 1 0] [
x y] = [ y x] A = [ 0 E E 0] A ⋅ [ Ether Dst Ether Src ] = [ Ether Src Ether Dst ] ※ &୯Ґߦྻ
IPもまとめて送受信アドレスを入れ替え νϣτ͘ͳΔ 0 E 0 0 E 0 0 0
0 0 0 E 0 0 E 0 Ether Dst Ether Src IP Dst IP Src = Ether Src Ether Dst IP Src IP Dst
TTLやICMP Code(Replay)の設定はゼロ乗算と加算で対応 (代入の代わり) ��0 × A + B = B
νϣτ͘ͳΔ
チェックサム計算は非線形なのでここは関数化 ������������������IPヘッダ ヘッダを16bit×10の配列としてみると ��sum = IP[0]�+ IP[1] +�… IP[9] ��sum
= (sum & 0xffff) + (sum >> 16)������桁上がり分を下位に加算 ��sum = (sum & 0xffff) + (sum >> 16)������加算後再度繰り上がった場合 ��fchk (IP) = ~sum�����������������������������������������ビット反転 νϣτ͘ͳΔ 7FS)-FO UPT MFO JE qBHͱ͔ 55- 1SPUP DIFDLTVN 4SD *1 %TU *1
まとめるとこんな感じ νϣτ͘ͳΔ Pkt = Ether Dst Ether Src IP Dst
IP Src IP TTL IP Chk ICMP Code ICMP Chk ΞυϨεೖସ θϩΫϦΞ ύϥϝʔλઃఆ Pkt tmp = 0 E E 0 E E 0 0 0 0 0 ⋅ Pkt + 0 0 0 0 IP newTTL 0 ICMP newCode 0
まとめるとこんな感じ やればやるほどNNより関数型言語が向いてる気が νϣτ͘ͳΔ IP newchk = f chk (Pkt tmp
) ICMP newchk = f chk (Pkt tmp ) Pkt reply = Pkt tmp + 0 0 0 0 0 IP newchk 0 ICMP newchk νΣοΫαϜܭࢉ ઃఆͯ͠ Ͱ͖͕͋Γ
これを期待してアドレス入れ替え行列が学習されると。。。 νϣτ͘ͳΔ 0 E 6 0 0 E 6 0
0 0 0 0 0 E 4 0 0 E 4 0 ظͯ͠ΔϞϊ ͤΊͯର͕֯θϩʹͳͬͯ͘ΕΕͳʔ ͜Ε͕ݱ࣮ −0.02153469 0.09266856 −0.02674774 ⋯ 0.08597313 −0.03119319 0.1256434 ⋯ 0.04272136 −0.07684021 0.03384783 ⋮ ⋮ ⋮ ⋱ ܭࢉ͞ΕͨϞϊ
·ͱΊͱࡶײ NWエンジニアがニューラルネットワークをやってみた �今日は ニューラルネットワークプログラマビリティ勉強会 君も今日から�ニューラルネットワークエンジニア
·ͱΊͱࡶײ ✦ ニューラルネットワークに必要な数学は教養課程の線形代数 ✦ �遊んでみるだけならフレームワーク利用が簡単 TensorFlow、Caffe、Chainer ✦ オンラインならplayground ��http://playground.tensorflow.org/
·ͱΊͱࡶײ ✦ TensorFlowがとっつきにくい ✦ �フレームワークが難しいのはWebでもAPIでも一緒 Rails、Play、etc… ✦ ��やりたいことを実現する手段を探すのが一番の手間 チュートリアルから先をやってる記事が思いのほか少ない ✦
数学用語の英語表記がガガガ �abs/squareくらいはなんとか �determinant = 行列式、transpose = 逆行列 辺りになると? ✦
·ͱΊͱࡶײ ✦ 本質的な難しさはデータの理解とNNの設計 ✦ データの特徴と期待する出力の理解が必要 データへの異常な愛は必須 ✦ �ニューロンや隠れ層の数、特徴を掴むのは経験則 通信ネットワーク同様 ✦
�まずは先駆者や既存のものの写経から始めましょう ナナメウエなネタは大変です
·ͱΊͱࡶײ ✦ NNは通信ネットワークに向いてる?? ✦ 「プロトコル」はルールそのものなのでルールベースの方が簡単 ✦ NNフレームワークが実数を前提としている パケットの値の範囲は 0≦χ≦255�(u_int8_t) ���https://example.com:443.141592/��とかやだなー
でもIPv4アドレスが実数ならIPv6いらないんじゃ? ✦ 整数、ビット演算など計算機向けのNN/FWがあっても良さそう
·ͱΊͱࡶײ ✦ パケット加工以外の使い所 ✦ フロー解析、予測 ✦ RFC読み込み→プロトコル自動生成 ✦ キュウリの等級判別→パケットの等級判別?
·ͱΊͱࡶײ ✦ フレームワークは無償だが学習コストは高い それなりの時間が必要 ✦ 計算コストはクラウドで解決 いい時代になりました
Thank you