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
Goでつくる進化計算パッケージ
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tsurubee
July 13, 2019
Technology
3.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goでつくる進化計算パッケージ
tsurubee
July 13, 2019
More Decks by tsurubee
See All by tsurubee
大規模言語モデルにおけるData-Centric AIと合成データの活用 / Data-Centric AI and Synthetic Data in Large Language Models
tsurubee
1
670
言語モデルによるAI創薬の進展 / Advancements in AI-Driven Drug Discovery Using Language Models
tsurubee
2
660
AIトップカンファレンスからみるData-Centric AIの研究動向 / Research Trends in Data-Centric AI: Insights from Top AI Conferences
tsurubee
3
3.5k
DeepCrysTet: A Deep Learning Approach Using Tetrahedral Mesh for Predicting Properties of Crystalline Materials
tsurubee
0
1.4k
3次元メッシュで表現した結晶構造を用いた材料物性の予測に向けた深層学習モデルの設計 / Design of Deep Learning Model for Predicting Material Properties Using Crystal Structure Represented by Three-Dimensional Mesh
tsurubee
1
2.6k
分散システムの性能異常に対する機械学習の解釈性に基づく原因診断手法 / A Method for Diagnosing the Causes of Performance Issues in Distributed Systems Based on the Interpretability of Machine Learning
tsurubee
0
1.8k
機械学習の解釈性に関する研究動向とシステム運用への応用 / A Survey on Interpretable Machine Learning and Its Application for System Operation
tsurubee
0
400
機械学習モデルの局所的な解釈に着目したシステムにおける異常の原因診断手法の構想
tsurubee
0
8.2k
アニーリングマシンを活用したエッジAIにおける 生成モデルの学習効率化のためのアーキテクチャ
tsurubee
0
1.7k
Other Decks in Technology
See All in Technology
味覇で作るパスタが美味い - 20261001_yabaubuki.dev
livesense
PRO
0
110
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
210
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.2k
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
FOSS4Gを活用した自治体業務DXの試み
470715
0
120
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
120
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
1
230
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
150
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
290
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
540
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
310
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
770
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Product Roadmaps are Hard
iamctodd
55
13k
Site-Speed That Sticks
csswizardry
13
1.6k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Transcript
GoConference’19 GoͰͭ͘ΔਐԽܭࢉύοέʔδ @tsurubee 2019.07.13 Go Conference '19 Summer in Fukuoka
GoConference’19 ా തจ (@tsurubee) GMOϖύϘגࣜձࣾ ϗεςΟϯάࣄۀ෦ ΠϯϑϥνʔϜ 2
GoConference’19 ࠓ͢͜ͱ wਐԽܭࢉͱҨతΞϧΰϦζϜͱ wҨతΞϧΰϦζϜͷΈ w(PݴޠʹΑΔҨతΞϧΰϦζϜͷ࣮ wࠓͷ͓ʢ࠷దԽʣΛղ͍ͯΈΔ 3
GoConference’19 ਐԽܭࢉͱ wੜͷਐԽৼΔ͍Λ฿ͨ͠࠷దԽख๏ͷ૯শ wϝλώϡʔϦεςΟοΫͳख๏Ͱ͋Γɺෳࡶͳߏͷಉఆ͕ ࠔͳʹ༗ޮͳ࠷దԽख๏ͱͯ͠ظ͞Ε͍ͯΔ 4
GoConference’19 ਐԽܭࢉͱ wੜͷਐԽৼΔ͍Λ฿ͨ͠࠷దԽख๏ͷ૯শ wϝλώϡʔϦεςΟοΫͳख๏Ͱ͋Γɺෳࡶͳߏͷಉఆ͕ ࠔͳʹ༗ޮͳ࠷దԽख๏ͱͯ͠ظ͞Ε͍ͯΔ 5 NFUBIFVSJTUJDBMHPSJUIN ಛఆͷͷΈΛରͱ͢ΔͷͰͳ͘ɺ ༷ʑͳʹରͯ͠ɺൺֱత࣌ؒͰ ۙࣅղΛޮΑ͘ٻΊΔղ๏
GoConference’19 ਐԽܭࢉύοέʔδ eago wཻࢠ܈࠷దԽ wҨతΞϧΰϦζϜ 6 IUUQTHJUIVCDPNUTVSVCFFFBHP &WPMVUJPOBSZ"MHPSJUINJNQMFNFOUFEJO(P ࣮ΞϧΰϦζϜ
GoConference’19 ਐԽܭࢉύοέʔδ eago wཻࢠ܈࠷దԽ wҨతΞϧΰϦζϜ 7 IUUQTHJUIVCDPNUTVSVCFFFBHP &WPMVUJPOBSZ"MHPSJUINJNQMFNFOUFEJO(P ࣮ΞϧΰϦζϜ ࠓճͪ͜Βʹ͍ͭͯհʂ
GoConference’19 ҨతΞϧΰϦζϜ(GA)ͱ w ूஂͷதͰڥʹదԠͨ͠ݸମ͕ΑΓߴ͍֬Ͱ ੜ͖Γɺ࣍ੈʹࢠΛ͢ʢࣗવ౫ଡઆʣΈ ΛιϑτΣΞతʹ͢͜ͱͰෳࡶͳʹର͢Δ ࠷దղΛ୳ࡧ͢Δख๏ w ͷղΛੜͷݸମʹݟཱͯͯɺͦͷݸମͷूஂʹ ରͯ͠ɺબʢ4FMFDUJPOʣަࠥʢ$SPTTPWFSʣಥવ
มҟʢ.VUBUJPOʣΛద༻͢Δ 8 ܦY5&$)৽ܕ৽װઢʮ/ܥʯͷlإz ΛੜΜͩʮҨతΞϧΰϦζϜʯͷൿີ IUUQTXXXTMJEFTIBSFOFUL[PLNHFOFUJDBMHPSJUIN IUUQTUFDIOJLLFJCQDPKQJUBSUJDMF$0-6./
GoConference’19 9 GAͷྲྀΕ
GoConference’19 10 GAͷྲྀΕ ූ߸Խ
GoConference’19 11 దԠ GAͷྲྀΕ ූ߸Խ
GoConference’19 12 GAͷྲྀΕ దԠ બ ූ߸Խ
GoConference’19 13 దԠ બ ަࠥ ಥવมҟ GAͷྲྀΕ ූ߸Խ
GoConference’19 ࠓͷ͓ 14
GoConference’19 Gopherͷը૾Λੜͯ͠ΈΑ͏ʂ 15 ූ߸Խʢ&ODPEJOHʣ దԠʢ'JUOFTTʣ બʢ4FMFDUJPOʣ
ަࠥʢ$SPTTPWFSʣ ಥવมҟʢ.VUBUJPOʣ ҎԼͷεςοϓʹԊͬͯղઆ͍͖ͯ͠·͢ʂ
GoConference’19 1. ූ߸ԽʢEncodingʣ 16 ʹର͢ΔղΛݸମͷછ৭ମɺղͷߏཁૉΛҨࢠͱͯ͠දݱ͢Δ છ৭ମɺʷʷ ࣍ݩϕΫτϧ 'MBUUFOJOH ɾɾɾɾ ʷ
<>VJOUܕ 3(#"ը૾
GoConference’19 ʹର͢Δղʢݸମʣͷྑ͞ΛධՁ 2. దԠʢFitnessʣ 17 ը૾ؒڑʢྨࣅʣϐΫηϧؒڑͷ૯ͷฏํࠜ ը૾ؒڑ͕θϩʹ͍ۙ΄Ͳɺ༏ΕͨղͰ͋Δ ը૾ؒڑ ϐΫηϧؒڑ ϢʔΫϦουڑ
GoConference’19 3. બʢSelectionʣ ڥʹదԠͰ͖Δݸମ΄Ͳ࣍ੈʹࣗͷҨࢠΛͤΔΑ͏ʹ͢ΔͨΊʹɺ ݸମͷదԠʹԠͯ͡ੜ͖ΔݸମΛબ͢Δ 18 τʔφϝϯτબʢUPVSOBNFOUTFMFDUJPOʣ ϥϯμϜʹநग़ͨ͠4ݸͷݸମͷ͏ͪɺ ࠷దԠ͕ߴ͍ݸମΛબ "
# $ % దԠ $ func Select(indi Individuals) (Individuals, error) { if len(indi) < t.NContestants { return nil, errors.New("NContestants is too large") } selected := make(Individuals, len(indi)) for i := range selected { winner := indi[rand.Intn(len(indi))] for j := 0; j < t.NContestants; j++ { next := indi[rand.Intn(len(indi))] if winner.Fitness > next.Fitness { winner = next } } selected[i] = winner } return selected, nil }
GoConference’19 4. ަ伹ʢCrossoverʣ 19 બ͞ΕͨͭͷݸମΛަࠥ͠ɺࢠݸମΛੜ͢Δ Ұަࠥ
ަࠥ ݸମ̍ ݸମ̎ ࢠݸମ̍ ࢠݸମ̎ ަࠥΛڥʹޓ͍ʹཁૉΛަ͢Δૢ࡞Λߦ͏
GoConference’19 5. ಥવมҟʢMutationʣ 20 ͍ͣΕͷ͍࣋ͬͯͳ͍ҨࢠΛࢠʹ࣋ͨͤΔ͜ͱͰଟ༷ੑͷҡ࣋͢Δ func (I Image) Mutation() {
mutationRate := 0.0005 rand.Seed(time.Now().UnixNano()) for i := 0; i < len(I.Pix); i++ { if rand.Float64() < mutationRate { I.Pix[i] = uint8(rand.Intn(255)) } } } ɾɾɾɾ ɾɾɾɾ Ұఆͷ֬ͰཁૉͷΛϥϯμϜʹมߋ͢Δ
GoConference’19 Ҏ্ͷεςοϓΛ܁Γฦͯ͠ ਐԽΛॏͶ͍͖ͯ·͢ʂ 21
GoConference’19 ͳͥGoݴޠͰॻ͍ͨͷ͔ʁ 22
GoConference’19 GAͷ՝ɿܭࢉ࣌ؒͷॖ w ("ɺେͳܭࢉྔΛཁ͢ΔͨΊɺ࣮༻࣌ؒͰྑͳղΛಘΔͨΊʹ ܭࢉॲཧΛߴԽ͢Δ͜ͱ͕·Ε͍ͯΔ 23 w ("ɺෳͷղީิΛ༻͍ͨଟ୳ࡧͷΞϧΰϦζϜͰ͋ΔͨΊɺຊ࣭త ʹฒྻԽͱੑ͕ߴ͍ w
ܭࢉ࣌ؒॖΛతͱͯ͠ɺ༷ʑͳ("ͷฒྻԽख๏͕ఏҊ͞Ε͍ͯΔ
GoConference’19 24 GAॲཧΛฒྻԽ͍͢͠ GoݴޠฒྻԽॲཧ͕ॻ͖͍͢ GoݴޠΛ͏ͱ༷ʑͳGAͷฒྻԽϞσϧ ΛαΫοͱ࣮Ͱ͖ͯ࠷ߴͳͷͰʁ
GoConference’19 ฒྻԽϞσϧɿϚελʔεϨʔϒํࣜ 25 4MBWF .BTUFS 4MBWF 4MBWF ɾɾɾ ϚελʔεϨʔϒํࣜ w
("ͷ࠷୯७ͳฒྻԽϞσϧͰ͋ΓɺదԠܭࢉΛฒྻԽ͢Δ w શମͷ੍ޚ͓ΑͼҨతૢ࡞Λߦ͏ϚελʔͱɺదԠܭࢉΛߦ͏ෳͷεϨʔϒ͔ Βߏ͞ΕΔ ͜͜ΛฒྻԽ͢Δʂ
GoConference’19 goroutineʹΑΔGAͷฒྻԽ w ͦΕͧΕͷݸମͷదԠܭࢉಠཱͯ͠ߦ͑ΔͨΊɺదԠܭࢉΛ͢ΔͨΊͷεϨʔϒͱͯ͠ HPSPVUJOFΛ্ཱͪ͛ͯɺฒྻͰܭࢉΛߦ͏ 26 func (indis Individuals) Evaluate(parallel
bool) { var wg sync.WaitGroup for i := range indis { wg.Add(1) go func(i int) { defer wg.Done() indis[i].Evaluate() //దԠܭࢉॲཧ }(i) } wg.Wait() } w TZOD8BJU(SPVQΛ༻͍ͯɺಠཱͨ͠ෳͷλεΫΛฏߦͰॲཧͯ͠ɺͦΕΒશͯͷऴྃΛͪ ߹ΘͤΔॲཧ͕γϯϓϧͳهड़Ͱ࣮Ͱ͖Δ
GoConference’19 Demo 27
GoConference’19 GAʹΑΔը૾ੜ 28 (PQIFSͷ͕࢟ʜʂ ʻ݅ʼ 1PQVMBUJPO4J[F $SPTTPWFS3BUF .VUBUJPO3BUF 5PVSOBNFOU4J[F ੈ
ੈ ඪ ੈ
GoConference’19 ฒྻԽͷ༗ޮੑ 29 దԠܭࢉͷฒྻԽ͕ॲཧ࣌ؒͷॖʹد༩͍ͯ͠Δ Ϛγϯɿ.BD#PPL1SP ϓϩηοαɿ()[*OUFM$PSFJ ϝϞϦɿ(#
GoConference’19 ·ͱΊ w("Λ࢝Ίͱͨ͠ਐԽܭࢉɺෳࡶͳߏͷಉఆ͕ࠔͳ ʹ༗ޮͳ࠷దԽख๏ͱͯ͠ظ͞Ε͍ͯΔ w("ଟ୳ࡧΞϧΰϦζϜͰ͋ΔͨΊɺฒྻԽͱੑ͕ߴ͍ wHPSPVUJOFΛ༻͍ΔͱαΫοͱ("ͷฒྻԽॲཧ͕ॻ͚Δ w("ͰԿͱ͔(PQIFSͷ໘Ө͕ݟ͑Δը૾͕࡞Εͨ 30
GoConference’19 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ 31