Friday, November 25, 2016

Dynamic Programming Chips



As anyone who has dabbled in computer science can no doubt tell you, the best route to solve any large-scale problems correctly is to break it down into smaller chunks. Turns out that this technique is called dynamic programming. It makes for very efficient problem solving not just in coding, but also in fields ranging from genomic analysis to economics to physics. Unfortunately, however, to adapt dynamic programming to computer chips with multiple “cores,” or processing units, your average genomic analyst or economist would have to be practically an expert programmer, too.

To make it so more people will be able to utilize dynamic programming chips, researchers at MIT's Computer Science and Artificial Intelligence Laboratory (CSAIL) and Stony Brook University have been working on a new system, Bellmania. The system lets users decide what they want a program to do in broad terms--the kind any non-programmer who doesn't need to worry about how particular computers are would. Bellmania then automatically creates versions of these new programs that are optimized to run on multicore chips.

According to MIT News, in order to test out Bellmania, the researchers "parallelized" several algorithms that used dynamic programming. In keeping with the whole point of dynamic programming, they split up the algorithms into smaller chunks so that they would run on multicore chips. The new programs were between three and eleven times as fast as those produced through earlier parallelization techniques. They were also, on average, just as effective as those manually-parallelized by computer scientists. So--voila! Expert researchers whose endeavors would be aided by dynamic programs no longer need to trouble themselves about becoming experts in another field altogether.

This is pretty interesting, I think. I'm glad that some of the best minds in computer science are working toward letting the best technology be easily-accessible to the best minds in other fields. Where would we be without cooperation?

Sources






Friday, November 18, 2016

A Judgmental Network



Previously on this blog, we've explored how humans have inadvertently passed some of our less-than-desirable tendencies on to artificial intelligence--discrimination. Today, however, let's talk about a more positive result of teaching computers to be critical: judging books by their covers.

Two scientists at Kyushu University in Japan, Brian Kenji Iwana and Seiichi Uchida, have developed a method to do precisely that. They've trained a deep neural network to scan the covers of books and determine their genre.

Now, just what is a deep neural network? According to Wikipedia, it is "an artificial neural network (ANN) with multiple hidden layers of units between the input and output layers." In English major's layman's terms, it is a set of algorithms that, when used together, are able to perform similarly to a human brain. They specialize in pattern recognition.

The two computer scientists trained their deep neural network to "read" book covers using--get this--Amazon. They downloaded exactly 137,788 book covers from the website along with the genre of each volume. The book covers they used belonged to one of 20 genres; if a book was listed under multiple genres, they just used the first.

Uchida and Iwana then used 80% of the data set to train the neural network to choose the book's correct genre just by looking at its cover. The remaining 20% was split up; the two used one 10% to validate the model and test the network and the other 10% to see how well it categorizes covers it's never seen before.

The network has had varying degrees of success. The algorithm often confuses children's books with graphic novels, and frequently mixes up biographies with books on historical eras. The algorithm lists the correct genre within its first three tries 40% of the time and correctly guessed it first 20%. While that's not exactly perfect, it is significantly better than chance.

According to Iwana and Uchida, “This shows that classification of book cover designs is possible, although a very difficult task.” 

Can't argue with that. My grandma once plucked Fifty Shades of Grey from the shelves expected to dive into a courtroom drama.

That brings me to one of the downsides of this algorithm: It's interesting and might perhaps be useful one day, sure, but there hasn't been a real study into how well humans can guess a book's genre by glancing at its cover before. Does our human experience give us a leg up to accomplishing the task? Are we, on average, superior book cover interpreters? I can't be sure.

Either way, this whole concept of deep neural networks is definitely fascinating. Who knows what patterns computer brains will be able to interpret once the programming and technology become even more sophisticated?

 Sources





Friday, November 11, 2016

Computer Science in Flight



Since it took essentially all of humanity's 200,000 years on the planet to come up with the airplane, it's no surprise that heavier-than-air aircraft are quite complicated. Naturally, as planes become faster and increasingly advanced, the technology behind them must also become more complex.

According to BestComputerScienceDegrees.com, computer science is instrumental in nearly every aspect of aviation. Modern aircraft use several technological subsystems that work together to pull off that beautiful feat of flight. Naturally, these require appropriate computer hardware and software to run smoothly and avoid planes from crashing into the ground. They also come in handy for training new pilots.

Computers are also very important to navigation. (Obviously!) According to the website, pilots "utilize computers to assist with navigation through electronic instruments and monitoring flight management systems." 

HowStuffWorks.com says that autopilot--or, as it is more appropriately called, "automatic flight control system" (AFCS)--wouldn't be what it is without a certain computer with several high-speed processors. In order to gather the information crucial to flying the plane, the computer's processors communicate with sensors located on all the plane's largest surfaces. It also collects data from instruments such as gyroscopes, accelerometers, and compasses.

The AFCS then takes that input data and compares it to a set of control modes. A control mode is a certain detail about the flight that is inputted manually by the pilot that dictate things like airspeed, altitude, and flight path.

The computer will send signals to several servomechanism units, or servos, that "provide mechanical control at a distance." There's one servo for each part of the autopilot system. The servos act like the plane's muscles, performing their instructions and moving the craft using hydraulics and motors.

If the input data adheres to the commands of the control modes, then the computer (and, by extension, the passengers and crew) can rest assured that the plane is running smoothly. 



Sources


Friday, November 4, 2016

The Process and Ethics of Ad Block



One of the most infuriating things about the internet is, to me, the torrent of advertisements you turn loose whenever you browse it. They're just so annoying! Buy this, buy that. Whenever I see a thirty-second unskippable ad about Schick Hydro on YouTube, I want to flip.

That's why I've recently installed AdBlock, an extension on my Safari browser that--you guessed it--prevents a website's advertisements from popping up on web pages I view. It's worked pretty well so far; I haven't even seen any ads on Reddit or The New York Times website. But I hadn't the faintest clue about how it actually functions. So I used that great fountain of knowledge, Google, and dug up some info. Not all of it was what I wanted to hear.

It turns out that ad blockers (also known as ad filters) are not all that complicated. Most ad blockers, according to TechCrunch.com, are installed as an extension on a web browser--just like I have mine. Once it's been installed, it can filter out those pesky ads in one or two ways:

  1. The ad blocker can check against a crowdsourced blacklist of domain names which are always ads, and prevent them from loading before the web page is even finished loading, or
  2. Quickly checking the page after it has loaded and removing any items that meet certain criteria,  such as a box that says "Sponsored."
There's more to it than that, though. According to Wikipedia, some ad blockers can manipulate a Domain Name System (DNS). Some external devices, like AdTrap, can even block advertisements.

Ad blockers work well for people like me who are sick of seeing ads, but are they actually harmful? Online content creators or hosts have only two options when it comes to making money: They can either ask for it directly from consumers (like Netflix, which charges a subscription) or collect revenue from ads. So, the site's owners receive less (an infinitesimal amount due to a single user, but it adds up) whenever someone uses an ad blocker.

Does this mean ad blockers are unethical? Are people who use ad blockers moochers? I can't say for sure, but I definitely think that advertisers would do well to work to alter their ads so that they actually spur people to buy products instead of just irking them.

Sources