Slide 1

Slide 1 text

OptunaʹΑΔଟ໨త࠷దԽ Optuna Meetup #1 2021/06/26 ඌ࡚ Յ඙ 1

Slide 2

Slide 2 text

ඌ࡚ Յ඙ • ॴଐ • άϦʔגࣜձࣾʗ࢈ۀٕज़૯߹ݚڀॴਓ޻஌ೳηϯλʔ • ࠷ۙͷݚڀ • Ozaki, Y., Tanigaki, Y., Watanabe, S., & Onishi, M. (2020). Multiobjective tree-structured parzen estimator for computationally expensive optimization problems. In Proceedings of the 2020 Genetic and Evolutionary Computation Conference (pp. 533-541). • Ozaki, Y., Suzuki, Y., Hawai, T., Saito, K., Onishi, M., & Ono, K. (2020). Automated crystal structure analysis based on blackbox optimisation. npj Computational Materials, 6(1), 1-7. • ඌ࡚Յ඙, ໺ଜক׮, & େ੢ਖ਼ً. (2020). ػցֶशʹ͓͚ΔϋΠύύϥϝʔλ࠷దԽख๏: ֓ཁͱಛ ௃. ిࢠ৘ใ௨৴ֶձ࿦จࢽ D, 103(9), 615-631. 2

Slide 3

Slide 3 text

໨࣍ • ͸͡Ίʹɿଟ໨త࠷దԽ • Optunaɿଟ໨త࠷దԽख๏ • Optunaɿଟ໨త࠷దԽؔ࿈ػೳ • ·ͱΊ 3

Slide 4

Slide 4 text

͸͡Ίʹɿଟ໨త࠷దԽ 4

Slide 5

Slide 5 text

ଟ໨త࠷దԽ • ໨త࠷దԽ໰୊ • ಉ࣌ʹ࠷దԽ͞ΕΔ ݸͷ໨తؔ਺͕ଘࡏ͢Δ໰୊ • ྫɿ੒ాۭߓ 㱺 ϑϥϯΫϑϧτؒͷҠಈϓϥϯ • ✔ Ҡಈ࣌ؒͷ࠷খԽ 㱻 ✔ අ༻ͷ࠷খԽʢ2ͭͷ໨త͸τϨʔυΦϑͷؔ܎ʣ m m 5

Slide 6

Slide 6 text

ଟ໨త࠷దԽ • ໨త࠷దԽ໰୊ • ಉ࣌ʹ࠷దԽ͞ΕΔ ݸͷ໨తؔ਺͕ଘࡏ͢Δ໰୊ m m ໨తۭؒ (f1 (x), f2 (x)) ୈ2໨తɿf2 (x) ୈ1໨తɿf1 (x) 2໨త࠷খԽ໰୊ Minimize/Maximize subject to ɿ ൪໨ͷ໨తؔ਺ ɿܾఆม਺ ɿ࣮ߦՄೳྖҬ f1 (x), f2 (x), …, fm (x) x ∈ X fi (x) i x X ୳ࡧۭؒ X x1 x2 ࣸ૾ 6

Slide 7

Slide 7 text

ଟ໨త࠷దԽ • ଟ໨త࠷దԽ໰୊Ͱ͸ɼ୯Ұͷ࠷దղ͸Ұൠʹଘࡏ͠ͳ͍ • ଞͷ೚ҙͷղʹ༏ӽ͞Εͳ͍શͯͷղͷू߹ΛύϨʔτηοτͱݺͼ ύϨʔτηοτͷ໨తۭؒͰͷ૾ΛύϨʔτϑϩϯτͱݺͿ ύϨʔτϑϩϯτ ྉۚ Ҡಈ࣌ؒ 2໨తʢҠಈ࣌ؒɼྉۚʣ࠷খԽ ༏ӽؔ܎ • A͸BΛ༏ӽ͢Δ • AͱC͸ൺֱෆՄೳͷؔ܎ ଟ໨త࠷దԽΛղ͘ͱ͸ύϨʔτηοτ ΛٻΊΔʢۙࣅ͢Δʣ͜ͱ 7

Slide 8

Slide 8 text

Optunaɿଟ໨త࠷దԽख๏ 8

Slide 9

Slide 9 text

Optunaͱଟ໨త࠷దԽɿػցֶशʹ͓͚ΔԠ༻ • λεΫ • Hyperparameter Optimization • Neural Architecture Search • ໨తؔ਺ • Ϟσϧਫ਼౓ • ϞσϧαΠζʢ଎౓ɼফඅిྗʣ https://arxiv.org/abs/2105.01015 9

Slide 10

Slide 10 text

ଟ໨త࠷దԽख๏ • ݱࡏOptunaͰར༻Մೳͳख๏ • ਐԽܕଟ໨త࠷దԽɿNSGA-II • ଟ໨తϕΠζ࠷దԽɿMOTPEɼqEHVI (integration.botorch) 10

Slide 11

Slide 11 text

ਐԽܕଟ໨త࠷దԽ • ਐԽܭࢉΛ༻͍Δ͜ͱͰɼύϨʔτϑϩϯτΛۙࣅ͢Δղू߹ΛҰ౓ ͷ࣮ߦͰಉ࣌ʹ֫ಘ͢Δ͜ͱΛ໨తͱͨ͠ख๏ 11

Slide 12

Slide 12 text

• ղͷ༏ྼΛɼඇ༏ӽϥϯΫʹجͮ͘ऩଋੑɼࠞࡶڑ཭ʹجͮ͘ଟ༷ੑ ͷ؍఺͔Βܾఆ͠ɼ༏ΕͨղΛݩʹ࣍ੈ୅ͷݸମΛੜ੒ NSGA-II (Deb et al., 2002) ඇ༏ӽϥϯΫɿ༏ӽ͞Ε͍ͯͳ͍ղΛRank 1ͱͯͦ͜͠ ͔Βॱʹऩଋੑʢ༏ӽؔ܎ʣʹԠͯ͡ϥϯΫ͕ܾ·Δ ࠞࡶڑ཭ɿྡΓ߹͏ݸମؒͷϚϯϋολϯڑ཭ͱͯ͠ ܭࢉ͞ΕΔʢ ʣɼ྆୺ʹ͍ͭͯ͸ ͱ໿ଋ͢Δ a + b ∞ 12

Slide 13

Slide 13 text

Optunaʹ͓͍ͯ NSGA-IIΛ࢖͏ import optuna def objective(trial): x = trial.suggest_float("x", 0, 5) y = trial.suggest_float("y", 0, 3) v0 = 4 * x ** 2 + 4 * y ** 2 v1 = (x - 5) ** 2 + (y - 5) ** 2 return v0, v1 # objective͸શͯͷ໨తؔ਺஋Λฦ͢ # NSGAIISamplerΛ࢖͏ sampler = optuna.samplers.NSGAIISampler(seed=1234) study = optuna.create_study( sampler=sampler, directions=["minimize", "minimize"] ) study.optimize(objective, n_trials=250) 13

Slide 14

Slide 14 text

ଟ໨తϕΠζ࠷దԽ • ໨తؔ਺΍୳ࡧۭؒʹ͍ͭͯϕΠζతͳϞσϧΛߏங͠ɼ֫ಘؔ਺ͱ ݺ͹ΕΔج४Λ༻͍ͯ༗๬ͳղΛޮ཰తʹαϯϓϧ͢Δख๏ • ໨తؔ਺ΛϞσϧԽɿຆͲͷଟ໨తϕΠζ࠷దԽख๏ • ୳ࡧۭؒΛϞσϧԽɿMOTPE 14

Slide 15

Slide 15 text

MOTPE (Ozaki et al., 2020) • Optunaͷ୯໨త࠷దԽʹ͓͚Δඪ४ΞϧΰϦζϜͰ͋ΔTPEΛଟ໨త ࠷దԽʹ֦ுͨ͠΋ͷ • Ϟσϧ͸୳ࡧۭؒ಺ͷ༗๬ɾඇ༗๬ͳղʹ͍ͭͯΧʔωϧີ౓ਪఆ ༗๬ ඇ༗๬ ୳ࡧۭؒʹ͓͍ͯରԠ͢Δ༗๬ͳղͷू߹ʹ ͍ͭͯΧʔωϧີ౓ਪఆ ୳ࡧۭؒʹ͓͍ͯରԠ͢Δඇ༗๬ͳղͷू߹ʹ ͍ͭͯΧʔωϧີ౓ਪఆ 15

Slide 16

Slide 16 text

MOTPE (Ozaki et al., 2020) • ࣍ʹධՁ͢Δղ͸Expected Hypervolume Improvement (EHVI) ֫ಘؔ਺ʹΑܾͬͯΊΔ • ू߹ ʹ఺ ΛՃ͑ͨͱ͖ͷϋΠύϘϦϡʔϜ૿Ճྔͷظ଴஋ʹରԠɼ͜ΕΛ࠷େԽ͢Δ Λ࠾༻ • ࣮͸༗๬ɾඇ༗๬ྖҬͷ֬཰ີ౓Λ ɼ ͱͨ͠ͱ͖ɼ ͕੒Γཱͭ EHVIY* (x) := ∫ max(IH (Y* ∪ {y}) − IH (Y*),0)p(y ∣ x)dy Y* y = f(x) x l(x) g(x) argmaxx EHVI(x) = argmaxx l(x)/g(x) Y r • ϋΠύϘϦϡʔϜ͸ ʹଐ͢ΔϕΫτϧͱࢀর఺ ʹғ·ΕͨྖҬ ͷ௒ମੵʢփ৭෦෼ʣ • ύϨʔτϑϩϯτ͸௒ମੵΛ࠷େԽ͢Δ Y r 16

Slide 17

Slide 17 text

Optunaʹ͓͍ͯ MOTPEΛ࢖͏ ... # MOTPESamplerʹมߋ͢Δ͚ͩ sampler = optuna.samplers.MOTPESampler(seed=1234) study = optuna.create_study( sampler=sampler, directions=["minimize", “minimize"] ) study.optimize(objective, n_trials=250) 17

Slide 18

Slide 18 text

ൺֱɿNSGA-IIͱMOTPE ؆୯ͳ໰୊Ͱ͋Ε͹ͲͪΒͰ΋͙͢ղ͚Δ 18

Slide 19

Slide 19 text

ൺֱɿNSGA-IIͱMOTPE • ऩଋ͸MOTPEͷํ͕଎͍ ʢAutoML޲͖ʣ ͖ͬ͞ΑΓ೉͍͠໰୊ʢධՁճ਺250ʣ 19

Slide 20

Slide 20 text

ൺֱɿNSGA-IIͱMOTPE • ऩଋ͸MOTPEͷํ͕଎͍ ʢAutoML޲͖ʣ • MOTPE͸ධՁճ਺ʹݶք͋Γ ʢNSGA-II͸زΒͰ΋ʣ MOTPE͸1000ճͰ15-20෼ఔ౓ɼଞͷଟ໨త ϕΠζ࠷దԽख๏ʢPESMO΍SMS-EGOʣΑΓ ѹ౗తʹ଎͍͕NSGA-IIͱൺ΂Δͱ࿩ʹͳΒͳ͍ 20

Slide 21

Slide 21 text

ൺֱɿNSGA-IIͱMOTPE • ऩଋ͸MOTPEͷํ͕଎͍ ʢAutoML޲͖ʣ • MOTPE͸ධՁճ਺ʹݶք͋Γ ʢNSGA-II͸زΒͰ΋ʣ • ७ਮͳ཭ࢄ࠷దԽ͸NSGA-II͕ Α͍ʢMOTPE͸ہॴղʹऩଋʣ 0-1φοϓαοΫʢ2໨త࠷େԽʣ 21

Slide 22

Slide 22 text

Optunaɿଟ໨త࠷దԽؔ࿈ػೳ 22

Slide 23

Slide 23 text

ՄࢹԽ • ࢄ෍ਤ • (Parallel coordinate) ... sampler = optuna.samplers.MOTPESampler(seed=1234) study = optuna.create_study(sampler=sampler, directions=["minimize", "minimize"]) study.optimize(objective, n_trials=250) # plotlyϕʔεͷՄࢹԽ fig = optuna.visualization.plot_pareto_front(study) fig.show() # matplotlibϕʔεͷՄࢹԽ optuna.visualization.matplotlib.plot_pareto_front( study ) plt.show() 23

Slide 24

Slide 24 text

ධՁ • ϋΠύϘϦϡʔϜ ... # ϋΠύϘϦϡʔϜܭࢉؔ਺͸͍·ͷͱ͜Ζ։ൃऀ޲͚API
 # কདྷతʹoptuna/_hypervolume/wfg.pyʹҠಈ͞ΕΔ༧ఆ wfg = optuna.multi_objective._hypervolume.WFG() reference_point = np.array([3, 5]) trials = study.trials hvs = [] for i in range(1, len(trials) + 1): vector_set = np.array( [t.values for t in trials[:i]] ) hvs.append( wfg.compute(vector_set, reference_point) ) plt.style.use(“ggplot") plt.xlabel("Number of valuations") plt.ylabel("Hypervolume") plt.plot(range(1, len(hvs) + 1), hvs) plt.show() 24

Slide 25

Slide 25 text

·ͱΊ • ଟ໨త࠷దԽ͸ύϨʔτ࠷దղͷू߹Λ֫ಘ͢Δ͜ͱ͕໨ඪ • Optuna͸ਐԽܕଟ໨త࠷దԽͱଟ໨తϕΠζ࠷దԽͷ2λΠϓͷख๏Λఏڙ • લऀ͸൚༻తɼNSGA-II͸ͦͷ࠷΋୅දతͳख๏Ͱ໿20೥ؒ΋ͷ࣮੷͕͋Δ • ޙऀ͸AutoML޲͖ɼMOTPE͸ϋΠύύϥϝʔλ࠷దԽख๏TPEͷଟ໨త൛ • Optunaͷଟ໨త࠷దԽؔ࿈ػೳΛ঺հ • ଟ໨త࠷దԽ͸ɼ୯໨త࠷దԽʹൺ΂ͯ׆༻ࣄྫ΋։ൃऀ΋গͳ͍ɼࠓճΛ ͖͔͚ͬʹϢʔβ΍։ൃऀ͕૿͑Δͱخ͍͠ 25