|
<!DOCTYPE html> |
|
<html lang="en"><head> |
|
<script src="main_files/libs/clipboard/clipboard.min.js"></script> |
|
<script src="main_files/libs/quarto-html/tabby.min.js"></script> |
|
<script src="main_files/libs/quarto-html/popper.min.js"></script> |
|
<script src="main_files/libs/quarto-html/tippy.umd.min.js"></script> |
|
<link href="main_files/libs/quarto-html/tippy.css" rel="stylesheet"> |
|
<link href="main_files/libs/quarto-html/light-border.css" rel="stylesheet"> |
|
<link href="main_files/libs/quarto-html/quarto-syntax-highlighting-549806ee2085284f45b00abea8c6df48.css" rel="stylesheet" id="quarto-text-highlighting-styles"><meta charset="utf-8"> |
|
<meta name="generator" content="quarto-1.6.40"> |
|
|
|
<meta name="author" content="Matej Sirovatka"> |
|
<title>NAS for Ternary Neural Networks</title> |
|
<meta name="apple-mobile-web-app-capable" content="yes"> |
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> |
|
<link rel="stylesheet" href="main_files/libs/revealjs/dist/reset.css"> |
|
<link rel="stylesheet" href="main_files/libs/revealjs/dist/reveal.css"> |
|
<style> |
|
code{white-space: pre-wrap;} |
|
span.smallcaps{font-variant: small-caps;} |
|
div.columns{display: flex; gap: min(4vw, 1.5em);} |
|
div.column{flex: auto; overflow-x: auto;} |
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} |
|
ul.task-list{list-style: none;} |
|
ul.task-list li input[type="checkbox"] { |
|
width: 0.8em; |
|
margin: 0 0.8em 0.2em -1em; |
|
vertical-align: middle; |
|
} |
|
</style> |
|
<link rel="stylesheet" href="main_files/libs/revealjs/dist/theme/quarto-bbe7401fe57d4b791b917637bb662036.css"> |
|
<link href="main_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css" rel="stylesheet"> |
|
<link href="main_files/libs/revealjs/plugin/reveal-menu/menu.css" rel="stylesheet"> |
|
<link href="main_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css" rel="stylesheet"> |
|
<link href="main_files/libs/revealjs/plugin/quarto-support/footer.css" rel="stylesheet"> |
|
<style type="text/css"> |
|
.reveal div.sourceCode { |
|
margin: 0; |
|
overflow: auto; |
|
} |
|
.reveal div.hanging-indent { |
|
margin-left: 1em; |
|
text-indent: -1em; |
|
} |
|
.reveal .slide:not(.center) { |
|
height: 100%; |
|
} |
|
.reveal .slide.scrollable { |
|
overflow-y: auto; |
|
} |
|
.reveal .footnotes { |
|
height: 100%; |
|
overflow-y: auto; |
|
} |
|
.reveal .slide .absolute { |
|
position: absolute; |
|
display: block; |
|
} |
|
.reveal .footnotes ol { |
|
counter-reset: ol; |
|
list-style-type: none; |
|
margin-left: 0; |
|
} |
|
.reveal .footnotes ol li:before { |
|
counter-increment: ol; |
|
content: counter(ol) ". "; |
|
} |
|
.reveal .footnotes ol li > p:first-child { |
|
display: inline-block; |
|
} |
|
.reveal .slide ul, |
|
.reveal .slide ol { |
|
margin-bottom: 0.5em; |
|
} |
|
.reveal .slide ul li, |
|
.reveal .slide ol li { |
|
margin-top: 0.4em; |
|
margin-bottom: 0.2em; |
|
} |
|
.reveal .slide ul[role="tablist"] li { |
|
margin-bottom: 0; |
|
} |
|
.reveal .slide ul li > *:first-child, |
|
.reveal .slide ol li > *:first-child { |
|
margin-block-start: 0; |
|
} |
|
.reveal .slide ul li > *:last-child, |
|
.reveal .slide ol li > *:last-child { |
|
margin-block-end: 0; |
|
} |
|
.reveal .slide .columns:nth-child(3) { |
|
margin-block-start: 0.8em; |
|
} |
|
.reveal blockquote { |
|
box-shadow: none; |
|
} |
|
.reveal .tippy-content>* { |
|
margin-top: 0.2em; |
|
margin-bottom: 0.7em; |
|
} |
|
.reveal .tippy-content>*:last-child { |
|
margin-bottom: 0.2em; |
|
} |
|
.reveal .slide > img.stretch.quarto-figure-center, |
|
.reveal .slide > img.r-stretch.quarto-figure-center { |
|
display: block; |
|
margin-left: auto; |
|
margin-right: auto; |
|
} |
|
.reveal .slide > img.stretch.quarto-figure-left, |
|
.reveal .slide > img.r-stretch.quarto-figure-left { |
|
display: block; |
|
margin-left: 0; |
|
margin-right: auto; |
|
} |
|
.reveal .slide > img.stretch.quarto-figure-right, |
|
.reveal .slide > img.r-stretch.quarto-figure-right { |
|
display: block; |
|
margin-left: auto; |
|
margin-right: 0; |
|
} |
|
</style> |
|
</head> |
|
<body class="quarto-light"> |
|
<div class="reveal"> |
|
<div class="slides"> |
|
|
|
<section id="title-slide" class="quarto-title-block center"> |
|
<h1 class="title">NAS for Ternary Neural Networks</h1> |
|
|
|
<div class="quarto-title-authors"> |
|
<div class="quarto-title-author"> |
|
<div class="quarto-title-author-name"> |
|
Matej Sirovatka |
|
</div> |
|
</div> |
|
</div> |
|
|
|
</section> |
|
<section id="introduction" class="slide level2"> |
|
<h2>Introduction</h2> |
|
<ul> |
|
<li>Neural Architecture Search (NAS) for Ternary Neural Networks</li> |
|
<li>Goal: Design an algorithm that can automatically find the best TNN architecture for a given task</li> |
|
</ul> |
|
</section> |
|
<section id="task" class="slide level2"> |
|
<h2>Task</h2> |
|
<ul> |
|
<li>Breast Cancer dataset</li> |
|
<li>Baseline from the default implementation of TNN</li> |
|
<li>Power: 6.12kW</li> |
|
<li>Accuracy: 98.05%</li> |
|
<li>Area: 108103083.0 <span class="math inline">\(nm^2\)</span></li> |
|
</ul> |
|
</section> |
|
<section id="implementation" class="slide level2"> |
|
<h2>Implementation</h2> |
|
<ul> |
|
<li>Utilizing DEAP library</li> |
|
<li>NSGA-II, SPEA2 or NSGA-III selection</li> |
|
<li>Chromosome encoding</li> |
|
<li>Multi fitness - output is a function of input</li> |
|
</ul> |
|
|
|
<img data-src="media/encoding.png" class="r-stretch"></section> |
|
<section id="experiments-and-hypotheses" class="slide level2"> |
|
<h2>Experiments and Hypotheses</h2> |
|
<ul> |
|
<li>Different evolutionary algorithms (NSGA-II, SPEA2, NSGA-III)</li> |
|
<li>Probabilities of crossover and mutation</li> |
|
<li>Population size</li> |
|
<li>Number of generations</li> |
|
<li>Extra objectives</li> |
|
</ul> |
|
</section> |
|
<section id="spea2-vs-nsga-ii-vs-nsga-iii" class="slide level2"> |
|
<h2>SPEA2 vs NSGA-II vs NSGA-III</h2> |
|
<ul> |
|
<li>NSGA-II was the first choice, not too good</li> |
|
<li>SPEA2 was very slow and could not find good solutions fast enough</li> |
|
<li>NSGA-III because it is good at multi-objective optimization</li> |
|
</ul> |
|
</section> |
|
<section id="spea2" class="slide level2"> |
|
<h2>SPEA2</h2> |
|
<p><img data-src="media/spea2.png" style="height:50.0%"></p> |
|
</section> |
|
<section id="nsga-ii" class="slide level2"> |
|
<h2>NSGA-II</h2> |
|
<p><img data-src="media/nsga2.png" style="height:50.0%"></p> |
|
</section> |
|
<section id="nsga-iii" class="slide level2"> |
|
<h2>NSGA-III</h2> |
|
<p><img data-src="media/nsga3.png" style="height:50.0%"></p> |
|
</section> |
|
<section id="comparison-of-different-probabilities-of-crossover" class="slide level2"> |
|
<h2>Comparison of different probabilities of crossover</h2> |
|
|
|
<img data-src="media/compare_cxpb.png" class="no-stretch quarto-figure quarto-figure-center r-stretch" style="width:50.0%"></section> |
|
<section id="comparison-of-different-population-sizes" class="slide level2"> |
|
<h2>Comparison of different population sizes</h2> |
|
|
|
<img data-src="media/compare_pop_size.png" class="no-stretch quarto-figure quarto-figure-center r-stretch" style="width:50.0%"></section> |
|
<section id="results" class="slide level2"> |
|
<h2>Results</h2> |
|
<ul> |
|
<li>NSGA-III is the best performing algorithm (finds the best solution)</li> |
|
<li>Best solution: |
|
<ul> |
|
<li>Accuracy: 98.55%</li> |
|
<li>Area: 8439297.0 <span class="math inline">\(nm^2\)</span></li> |
|
<li>Power: 0.5236 kW</li> |
|
</ul></li> |
|
</ul> |
|
<p>A 10x improvement in power consumption with a slight increase in accuracy.</p> |
|
</section> |
|
<section id="problems-1" class="slide level2"> |
|
<h2>Problems 1</h2> |
|
<ul> |
|
<li>Wrong choice of chromosome encoding - algorithm gets stuck permuting the same architecture</li> |
|
<li>Low chance of finding harder to find optimal solutions</li> |
|
</ul> |
|
</section> |
|
<section id="problems-2" class="slide level2"> |
|
<h2>Problems 2</h2> |
|
|
|
<img data-src="media/pareto.png" class="no-stretch quarto-figure quarto-figure-center r-stretch" style="width:50.0%"><p><em>Pareto front showing the trade-offs between accuracy, area, and power consumption across solutions</em></p> |
|
</section> |
|
<section id="short-summary" class="slide level2"> |
|
<h2>Short summary</h2> |
|
<ul> |
|
<li>Accuracy increased by 0.5%</li> |
|
<li>Area decreased by ~20%</li> |
|
<li>Power decreased by ~90%</li> |
|
</ul> |
|
<p>Thank you for your attention!</p> |
|
|
|
</section> |
|
</div> |
|
<div class="quarto-auto-generated-content" style="display: none;"> |
|
<div class="footer footer-default"> |
|
|
|
</div> |
|
</div></div> |
|
|
|
<script>window.backupDefine = window.define; window.define = undefined;</script> |
|
<script src="main_files/libs/revealjs/dist/reveal.js"></script> |
|
|
|
<script src="main_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/pdf-export/pdfexport.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/reveal-menu/menu.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/quarto-support/support.js"></script> |
|
|
|
|
|
<script src="main_files/libs/revealjs/plugin/notes/notes.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/search/search.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/zoom/zoom.js"></script> |
|
<script src="main_files/libs/revealjs/plugin/math/math.js"></script> |
|
<script>window.define = window.backupDefine; window.backupDefine = undefined;</script> |
|
|
|
<script> |
|
|
|
|
|
|
|
Reveal.initialize({ |
|
'controlsAuto': true, |
|
'previewLinksAuto': false, |
|
'pdfSeparateFragments': false, |
|
'autoAnimateEasing': "ease", |
|
'autoAnimateDuration': 1, |
|
'autoAnimateUnmatched': true, |
|
'jumpToSlide': true, |
|
'menu': {"side":"left","useTextContentForMissingTitles":true,"markers":false,"loadIcons":false,"custom":[{"title":"Tools","icon":"<i class=\"fas fa-gear\"></i>","content":"<ul class=\"slide-menu-items\">\n<li class=\"slide-tool-item active\" data-item=\"0\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.fullscreen(event)\"><kbd>f</kbd> Fullscreen</a></li>\n<li class=\"slide-tool-item\" data-item=\"1\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.speakerMode(event)\"><kbd>s</kbd> Speaker View</a></li>\n<li class=\"slide-tool-item\" data-item=\"2\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.overview(event)\"><kbd>o</kbd> Slide Overview</a></li>\n<li class=\"slide-tool-item\" data-item=\"3\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.togglePdfExport(event)\"><kbd>e</kbd> PDF Export Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"4\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.toggleScrollView(event)\"><kbd>r</kbd> Scroll View Mode</a></li>\n<li class=\"slide-tool-item\" data-item=\"5\"><a href=\"#\" onclick=\"RevealMenuToolHandlers.keyboardHelp(event)\"><kbd>?</kbd> Keyboard Help</a></li>\n</ul>"}],"openButton":true}, |
|
'smaller': false, |
|
|
|
|
|
controls: false, |
|
|
|
|
|
|
|
controlsTutorial: false, |
|
|
|
|
|
controlsLayout: 'edges', |
|
|
|
|
|
|
|
controlsBackArrows: 'faded', |
|
|
|
|
|
progress: true, |
|
|
|
|
|
slideNumber: false, |
|
|
|
|
|
showSlideNumber: 'all', |
|
|
|
|
|
|
|
hash: true, |
|
|
|
|
|
hashOneBasedIndex: false, |
|
|
|
|
|
respondToHashChanges: true, |
|
|
|
|
|
history: true, |
|
|
|
|
|
keyboard: true, |
|
|
|
|
|
overview: true, |
|
|
|
|
|
|
|
disableLayout: false, |
|
|
|
|
|
center: false, |
|
|
|
|
|
touch: true, |
|
|
|
|
|
loop: false, |
|
|
|
|
|
rtl: false, |
|
|
|
|
|
navigationMode: 'linear', |
|
|
|
|
|
shuffle: false, |
|
|
|
|
|
fragments: true, |
|
|
|
|
|
|
|
fragmentInURL: false, |
|
|
|
|
|
|
|
embedded: false, |
|
|
|
|
|
|
|
help: true, |
|
|
|
|
|
pause: true, |
|
|
|
|
|
showNotes: false, |
|
|
|
|
|
autoPlayMedia: null, |
|
|
|
|
|
preloadIframes: null, |
|
|
|
|
|
|
|
|
|
autoSlide: 0, |
|
|
|
|
|
autoSlideStoppable: true, |
|
|
|
|
|
autoSlideMethod: null, |
|
|
|
|
|
|
|
|
|
defaultTiming: null, |
|
|
|
|
|
mouseWheel: false, |
|
|
|
|
|
display: 'block', |
|
|
|
|
|
hideInactiveCursor: true, |
|
|
|
|
|
hideCursorTime: 5000, |
|
|
|
|
|
previewLinks: false, |
|
|
|
|
|
transition: 'none', |
|
|
|
|
|
transitionSpeed: 'default', |
|
|
|
|
|
|
|
backgroundTransition: 'none', |
|
|
|
|
|
viewDistance: 3, |
|
|
|
|
|
|
|
|
|
mobileViewDistance: 2, |
|
|
|
|
|
|
|
|
|
width: 1050, |
|
|
|
height: 700, |
|
|
|
|
|
margin: 0.1, |
|
|
|
math: { |
|
mathjax: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js', |
|
config: 'TeX-AMS_HTML-full', |
|
tex2jax: { |
|
inlineMath: [['\\(','\\)']], |
|
displayMath: [['\\[','\\]']], |
|
balanceBraces: true, |
|
processEscapes: false, |
|
processRefs: true, |
|
processEnvironments: true, |
|
preview: 'TeX', |
|
skipTags: ['script','noscript','style','textarea','pre','code'], |
|
ignoreClass: 'tex2jax_ignore', |
|
processClass: 'tex2jax_process' |
|
}, |
|
}, |
|
|
|
|
|
plugins: [QuartoLineHighlight, PdfExport, RevealMenu, QuartoSupport, |
|
|
|
RevealMath, |
|
RevealNotes, |
|
RevealSearch, |
|
RevealZoom |
|
] |
|
}); |
|
</script> |
|
<script id="quarto-html-after-body" type="application/javascript"> |
|
window.document.addEventListener("DOMContentLoaded", function (event) { |
|
const toggleBodyColorMode = (bsSheetEl) => { |
|
const mode = bsSheetEl.getAttribute("data-mode"); |
|
const bodyEl = window.document.querySelector("body"); |
|
if (mode === "dark") { |
|
bodyEl.classList.add("quarto-dark"); |
|
bodyEl.classList.remove("quarto-light"); |
|
} else { |
|
bodyEl.classList.add("quarto-light"); |
|
bodyEl.classList.remove("quarto-dark"); |
|
} |
|
} |
|
const toggleBodyColorPrimary = () => { |
|
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap"); |
|
if (bsSheetEl) { |
|
toggleBodyColorMode(bsSheetEl); |
|
} |
|
} |
|
toggleBodyColorPrimary(); |
|
const tabsets = window.document.querySelectorAll(".panel-tabset-tabby") |
|
tabsets.forEach(function(tabset) { |
|
const tabby = new Tabby('#' + tabset.id); |
|
}); |
|
const isCodeAnnotation = (el) => { |
|
for (const clz of el.classList) { |
|
if (clz.startsWith('code-annotation-')) { |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
const onCopySuccess = function(e) { |
|
|
|
const button = e.trigger; |
|
|
|
button.blur(); |
|
|
|
button.classList.add('code-copy-button-checked'); |
|
var currentTitle = button.getAttribute("title"); |
|
button.setAttribute("title", "Copied!"); |
|
let tooltip; |
|
if (window.bootstrap) { |
|
button.setAttribute("data-bs-toggle", "tooltip"); |
|
button.setAttribute("data-bs-placement", "left"); |
|
button.setAttribute("data-bs-title", "Copied!"); |
|
tooltip = new bootstrap.Tooltip(button, |
|
{ trigger: "manual", |
|
customClass: "code-copy-button-tooltip", |
|
offset: [0, -8]}); |
|
tooltip.show(); |
|
} |
|
setTimeout(function() { |
|
if (tooltip) { |
|
tooltip.hide(); |
|
button.removeAttribute("data-bs-title"); |
|
button.removeAttribute("data-bs-toggle"); |
|
button.removeAttribute("data-bs-placement"); |
|
} |
|
button.setAttribute("title", currentTitle); |
|
button.classList.remove('code-copy-button-checked'); |
|
}, 1000); |
|
|
|
e.clearSelection(); |
|
} |
|
const getTextToCopy = function(trigger) { |
|
const codeEl = trigger.previousElementSibling.cloneNode(true); |
|
for (const childEl of codeEl.children) { |
|
if (isCodeAnnotation(childEl)) { |
|
childEl.remove(); |
|
} |
|
} |
|
return codeEl.innerText; |
|
} |
|
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', { |
|
text: getTextToCopy |
|
}); |
|
clipboard.on('success', onCopySuccess); |
|
if (window.document.getElementById('quarto-embedded-source-code-modal')) { |
|
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', { |
|
text: getTextToCopy, |
|
container: window.document.getElementById('quarto-embedded-source-code-modal') |
|
}); |
|
clipboardModal.on('success', onCopySuccess); |
|
} |
|
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); |
|
var mailtoRegex = new RegExp(/^mailto:/); |
|
var filterRegex = new RegExp('/' + window.location.host + '/'); |
|
var isInternal = (href) => { |
|
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); |
|
} |
|
|
|
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)'); |
|
for (var i=0; i<links.length; i++) { |
|
const link = links[i]; |
|
if (!isInternal(link.href)) { |
|
|
|
|
|
if (link.dataset.originalHref !== undefined) { |
|
link.href = link.dataset.originalHref; |
|
} |
|
} |
|
} |
|
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) { |
|
const config = { |
|
allowHTML: true, |
|
maxWidth: 500, |
|
delay: 100, |
|
arrow: false, |
|
appendTo: function(el) { |
|
return el.closest('section.slide') || el.parentElement; |
|
}, |
|
interactive: true, |
|
interactiveBorder: 10, |
|
theme: 'light-border', |
|
placement: 'bottom-start', |
|
}; |
|
if (contentFn) { |
|
config.content = contentFn; |
|
} |
|
if (onTriggerFn) { |
|
config.onTrigger = onTriggerFn; |
|
} |
|
if (onUntriggerFn) { |
|
config.onUntrigger = onUntriggerFn; |
|
} |
|
config['offset'] = [0,0]; |
|
config['maxWidth'] = 700; |
|
window.tippy(el, config); |
|
} |
|
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); |
|
for (var i=0; i<noterefs.length; i++) { |
|
const ref = noterefs[i]; |
|
tippyHover(ref, function() { |
|
|
|
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); |
|
try { href = new URL(href).hash; } catch {} |
|
const id = href.replace(/^#\/?/, ""); |
|
const note = window.document.getElementById(id); |
|
if (note) { |
|
return note.innerHTML; |
|
} else { |
|
return ""; |
|
} |
|
}); |
|
} |
|
const findCites = (el) => { |
|
const parentEl = el.parentElement; |
|
if (parentEl) { |
|
const cites = parentEl.dataset.cites; |
|
if (cites) { |
|
return { |
|
el, |
|
cites: cites.split(' ') |
|
}; |
|
} else { |
|
return findCites(el.parentElement) |
|
} |
|
} else { |
|
return undefined; |
|
} |
|
}; |
|
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); |
|
for (var i=0; i<bibliorefs.length; i++) { |
|
const ref = bibliorefs[i]; |
|
const citeInfo = findCites(ref); |
|
if (citeInfo) { |
|
tippyHover(citeInfo.el, function() { |
|
var popup = window.document.createElement('div'); |
|
citeInfo.cites.forEach(function(cite) { |
|
var citeDiv = window.document.createElement('div'); |
|
citeDiv.classList.add('hanging-indent'); |
|
citeDiv.classList.add('csl-entry'); |
|
var biblioDiv = window.document.getElementById('ref-' + cite); |
|
if (biblioDiv) { |
|
citeDiv.innerHTML = biblioDiv.innerHTML; |
|
} |
|
popup.appendChild(citeDiv); |
|
}); |
|
return popup.innerHTML; |
|
}); |
|
} |
|
} |
|
}); |
|
</script> |
|
|
|
|
|
</body></html> |