class: center, middle # Novel Results Considered Harmful ## University of Toronto ## 2018-07-10 Adam Drake @aadrake
--- class: center, middle # @aadrake #hacker # @aadrake #thoughtleader --- class: middle # Overview 1. Background 2. AI vs. IA 3. Novel vs. Useful 4. Applications --- class: middle # Background - Applied Mathematics - 20+ years in tech - Growth-stage startup advisor - Management consulting and high-performance tech/ML --- class: middle, center # AI vs. IA ## Artificial Intelligence ## Intelligence Amplification --- class: middle # Novel: New or unusual # Useful: Helpful toward advancing a purpose --- class: middle # Douglas Engelbart Augmenting Human Intellect: A Conceptual Framework (1962) ## MOAD: 1968 Windows, hypertext, graphics, video conferencing, computer mouse, word process, dynamic file linking, version control, collaborative real-time editing --- class: middle # Kaggle Often novel. Rarely useful. Solution A: 67.6% accuracy Ensemble of 20 Field-aware Factorization Machine (FFM) models with tuned parameters: 68.5% accuracy, 1st place --- class: middle # Kaggle Often novel. Rarely useful. Logistic regression: 67.6% accuracy, **453rd place**! Ensemble of 20 Field-aware Factorization Machine (FFM) models with tuned parameters: 68.5% accuracy, 1st place --- class: middle # Sorting Which sort algorithm is used for Python, Android, Java SE 7, Octave, ... ? --- class: middle # Timsort (Tim Peters, 2002) #### Hybrid mergesort and insertion sort #### Accounts for sequential runs in array and merges them as a block .credit[References "Optimistic Sorting and Information Theoretic Complexity" (McIlroy, 1993)] --- class: middle, center # Biggest problem in machine learning? --- class: middle, center # Count everything, but don't count anything twice. .credit[--Yaser Abu-Mustafa] --- class: middle # Typical Problems - counting - binary classification (fraud, churn, clicks, etc.) - anomaly detection - time series forecasting - segmentation .credit[For even further generalization, see Machine Learning Reductions] --- class: middle # Command-line Tools can be 235x Faster than your Hadoop Cluster (2014) --- class: middle # Scalability! But at what COST? ## McSherry et al. 2015 Configuration that Outperforms a Single Thread --- class: middle # COST = How many cores do you need before you outperform a single thread? .credit[Note: 25Gbps ~ 3125MB/s is commodity bandwidth] --- class: middle, center ![](data:image/jpeg;base64,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5dSlR0ygzFtmbSghQTCC5IEA7opaUPISXPyfyUk3Ak2MQdidc6OUmvehaE8JYaawAg0vduihDgIT5IMZqmr7aDeGXmvNhuEBA0Qr9lgDTSsVT73EAJ8khjNU1fZAd5SEJJpENEddEnAT7G9/mZUku4SDhgw3aU+kC8nA4SWFW9E1MZPAAiSA++35EW24jgFN6+nQ7YA6URdDAAh+MmQfcl2UpUdMoMxbZm0opaUPISXPyfyEFot6EOxb2VRKiAE0YGLMmlimMuzIMXHCKKSJhRoAAgBmL3b/APdKAt1B6AqOKAWeiKp1QD38KzODTvVAXNoN08owACIgnt/0cxbES5GDeQgaVvVhED3kC+DvJeZEiyHlpTkZCcBrFjV+FCwLDtIZNCEJEDFpBMxM/wD4Gf/aAAwDAQACAAMAAAAQ888888888888888888888888888888888888888888888881c0hj6yYhnb/tavRyjww8888888888888888888c88Mscs8MM8ss8scMcc8888888888883487w8w43RzsIMMMEMMIMMMEMMEMMIMMMU8888sscM88MsPPO+o888U88o888U88U88o888U8888ozLi7IMjNAA1o888U88o888U88U88o888U888888888wwy79++i888U88o888U88U88o888U88488888ON8sMPOOr888U88o888U88U88o888U885V888LxeHLjgAXo888U88o888U88U88o888U88tV88888w040xxxl088U88o888U88U88o888U88N88888cPf8APHffaXfPFPPKPPPFPPFPPKPPPFPPPVfPPPPyE40xDDHDDHlPPKPPPFPPFPPKPPPFPPHV/PPOMFPGKOccYcccUccZ/PPFPPFPPKPPPFPPIPPPPL/PLWHAAABAAACAABfPPFPPFPPKPPPFPPPPPPL2Md8ZpEccccccccccccccY/FPPKPPPFPPPPPPPPPHNJMCwgggggggggggggkcEMMIN/PFPPPPPPPPH3bLfyQABAAACAABAAACAACAABBPPFPPPPPPPPPPPPPBDDHBDDKDDHBDBKDDoDCGDDDPPPPPPPPPPPPPPLPPHHPPLHLPHPLPPPHHPDLPLPvPPPPPPPPPPPPPPPPPPKJG/fPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP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) .credit[Plot by A. Colyer] --- class: middle # Practical Example: Binary classification - Logistic regression with per-coordinate learning rates and OSGD --- class: middle, center ![](data:image/jpeg;base64,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NnCvzJZey7p5S6OaE3S9U1JBHVaAy3PdUtcKmKplz2thrqljY4yxkLaqWV7WPALdYMRgHD9QIk2q9n55oez/AHIvoIayq0blfcKq2Uttmizxtuolv0tvqJ6ZjpSXs3OyKZoaXhhlaS+RhaXNG+zjpBWXDsbQ32v0Yb/yygp6+SlooC6pDahzhGxsTqoTBrQANdHFO1xEhkbTMZnP6FDWtwygDKMBgOAIWtLg4gFw4DhwK6xK/PfZY7MV5sF4070dtV1tNHNQ6MV1XQClYyprIZ46F07ZJRr88WGU4B1MYSNWdfneIVF/Z+urXVNDTVGj1dX0tHd5qqSEOLaSOCvooKWtljEpc2nNPVvqnAkZ42Ase1u+P6GytzZsBmwwxw24IGhvcgDmCk2g/MEHZh0mi0DvtQ+92nSGR0V9uFLdqKGSGnfTUVVLE9sTmyEt2yUYjOL9j3b6QDMt3N2bNKKSquzKuTR9kElRcGUUzqKZjbbBS3xltfPUkz/TMbHJr3kagN1TgXAHM37s2y0LLw68Np29sXUraTXEklsIcXZAMcAMzsTgBjg3HHKMPL5ZaPSK1VNrurJJKOpaGytjnfC4jEHDOxzXDg8RCdlaDsY6TVml2htLdLpU26tqnVVbTuqbZG+OmnENVLC2SNrnPIDmxh2GZw27CRgV16wLLZbfo7aqS12SkioqCkjEcMMQwa0fMknEknaSSSSSs9EEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREH//Z) .credit[Wikipedia] --- class: middle # Aside: The Hashing Trick Assume data like fname,lname,location Adam,Drake,Toronto ```python features = ['fnameAdam', 'lnameDrake', 'locationToronto'] maxWeights = 2**20 def hashedFeatures(features): hashes = [hash(x) for x in features] return [x % maxWeights for x in hashes] print(hashedFeatures(features)) # [18445008, 8643786, 20445187] ``` These are the indices in the weights array .credit[Weinberger et al., Feature Hashing for Large Scale Multitask Learning, 2009] --- class: middle # Feature hashing benefits - security/privacy - bounded memory consumption - stateless feature extraction --- class: middle # Logistic regression, feature hashing, per-coordinate learning rates, OSGD #### Complicated framework? --- class: middle Example ```python # Turn the record into a list of hash values x = [0] # 0 is the index of the bias term for key, value in record.items(): index = int(value + key[1:], 16) % D x.append(index) # Get the prediction for the given record (now transformed to hash values) wTx = 0. for i in x: # do wTx wTx += w[i] # w[i] * x[i], but if i in x we got x[i] = 1. p = 1. / (1. + exp(-max(min(wTx, 20.), -20.))) # Update the loss p = max(min(p, 1. - 10e-12), 10e-12) loss += -log(p) if y == 1. else -log(1. - p) # Update the weights for i in x: # alpha / (sqrt(n) + 1) is the adaptive learning rate heuristic # (p - y) * x[i] is the current gradient # note that in our case, if i in x then x[i] = 1 w[i] -= (p - y) * alpha / (sqrt(n[i]) + 1.) n[i] += 1. ``` --- class: middle, center # Result: 74,000 RPS ##### (19MB/s) --- class: middle #### Ad Click Prediction: a View from the Trenches (McMahan et al., 2013) --- class: middle # Multicore ```go // ... housekeeping ... // Hash the record for i, v := range record { hashResult := hash([]byte(fields[i]+v)) % int(D) x[i+1] = int(math.Abs(float64(hashResult))) } // Make prediction wTx := 0.0 for _, v := range x { wTx += (*w)[v] } p := 1.0 / (1.0 + math.Exp(-math.Max(math.Min(wTx, 20.0), -20.0))) p = math.Max(math.Min(p, 1.-math.Pow(10, -12)), math.Pow(10, -12)) // Update the loss if y == 1 { *loss += -math.Log(p) } else { *loss += -math.Log(1.0 - p) } // Update the weights for _, v := range x { (*w)[v] = (*w)[v] - (p-float64(y))*alpha/(math.Sqrt((*n)[v])+1.0) (*n)[v]++ } ``` --- class: middle, center ### HOGWILD!: A Lock-Free Approach to Parallelizing Stochastic Gradient Descent i.e., Nevermind about locks .credit[Niu, Recht, et al. 2011] --- class: middle, center # Multicore version (Go): ## 366,000 RPS ###### (~95MB/s) .credit[Note: 25Gbps ~ 3125MB/s] --- class: middle # Application: Edge Analytics - privacy - resources (bandwidth, bettery, storage, RAM) - accuracy .credit[Resource-efficient Machine Learning in 2KB RAM for the Internet of Things, Kunmar et al. 2017] --- class: middle # Conclusion - Novel results often harmful - Useful methods often seen as boring - Old methods are often great for new problems - Troubling Trends in Machine Learning Scholarship (Lipton and Steinhardt, 9 JUL 2018) --- class: middle, center # @aadrake #
# Questions?