惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
GbyAI
GbyAI
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
A
About on SuperTechFans
M
MIT News - Artificial intelligence
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
Google DeepMind News
Google DeepMind News
博客园 - Franky
B
Blog RSS Feed
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research

Rc-2020 on Julia Evans

Day 57: Trying to set up GitHub Actions Day 56: A little WebAssembly Day 53: a little nginx, IPv6, and wireguard Day 52: testing how many Firecracker VMs I can run Day 51: Fixed my logging and made a couple of puzzles Day 50: Building some tarballs for puzzles, and trying to make a kernel boot faster Day 49: making the VMs boot faster Day 48: Another Go program, and a little vim configuration Day 47: Using device mapper to manage Firecracker images Day 46: debugging an iptables problem Day 44: Building my VMs with Docker Day 43: Building VM images Day 42: Writing a Go program to manage Firecracker VMs Day 41: Trying to understand what a bridge is Day 40: screen flickering & a talk about containers Day 39: Customizing gotty's terminal Day 38: Modifying gotty to serve many different terminal applications at once Day 37: A new laptop and a little Vue Day 35: Launching my VMs more reliably Day 34: Learning about qemu Day 33: pairing is magic and beautiful git diffs Day 32: A Rails model that doesn't use the database with ActiveHash Day 24: a short talk about blogging myths, and a debugging tip Day 23: a little Rails testing Day 22: getting OAuth to work in Rails Day 21: wrangling systemd & setting up git deploys to a VM Day 19: Clustering faces (poorly) using an autoencoder Day 20: trying to figure out how Google Cloud IAM works Day 18: an answer to an autoencoder question Day 13: BPTT, and debugging why a model isn't training is hard
Day 17: trying to wrap my head around autoencoders
Julia Evans · 2020-12-01 · via Rc-2020 on Julia Evans

Julia Evans

Hello! Right now I’m back to working on neural networks with sketches of faces.

current goal: cluster the faces somehow

As a starting point, I thought it’d be fun to, instead of generating faces, get the neural network to do some unsupervised clustering of the faces! The idea is:

  1. Get the Machine Learning to cluster the faces into groups
  2. See if I like the faces in some groups more than others
  3. If I do, then maybe just train a model on the cluster of faces that I like

how do you actually do clustering of a sequence of vectors though?

The usual way to do clustering is with k-means or something, but these drawings of faces aren’t a single vector, they’re a sequence of vectors! So k-means wouldn’t make any sense.

I Googled “rnn unsupervised clustering” a little bit and learned about a way to do this: autoencoders!

It seems like the way an autoencoder works at a high level is:

  1. Create “encoder” RNN that translates the input into a lower-dimensional vector (like 4 dimensions or something)
  2. Create a “decoder” RNN that translates the 4-dimensional

Train both of them together, with the objective function being something like:

loss = F.cross_entropy(decoder(encoder(input)), input)

where we try to get decoder(encoder(x)) as close to x as possible.

I found a tutorial on the PyTorch wiki talking about how to use this encoder / decoder pattern to do translation from French to English.

questions I still have about autoencoders

I’m still pretty confused about how this encoder / decoder pattern actually works, and I didn’t get very far on this today. So here are some questions in the hopes that I can answer them tomorrow!

  1. when training, do I need to embed my original input vector into a higher dimensional space (with a nn.Embedding)? (I don’t think so, because they’re vectors and not integer labels, but I’m not sure)
  2. The Encoder class in the translation tutorial outputs 2 vectors, an output and a hidden vector. Which one is the encoding, the output or the hidden vector? (or both???)
  3. Should my hidden vector have a lot of dimensions (like 50), or should it have the same number of dimensions as I want classes to categorize my faces into (like 5?)
  4. Both of the examples I’m looking at use a relu function as part of their neural networks. What does relu mean?

tomorrow: maybe write a toy autoencoder!

Maybe tomorrow I’ll try to do a simpler autoencoder example with some toy data, I think that might clarify things for me! As always trying to use a technique I don’t understand at all with a complicated dataset is really confusing and demoralizing, I think if I simplify the dataset a LOT it should go better.