奎克的藏经阁 · MinerU 解析内容

If...Then Algorithmic Power and Politics

211 个 PDF 物理页 · 本页显示文件第 31–40 页

PDF 物理页索引 30

文件中的第 31 页 · 印刷页码:20

This chapter ofers the conceptual groundwork I believe is necessary to appreciate the multiple levels at which algorithms exist and operate, both technically and theoretically. The first part of this chapter explains what algorithms are in a more technical sense, particularly with regards to machine learning, as most of the algorithms operating in the media landscape depend on systems that are able to learn from data and make predictions. This should provide readers with enough background knowledge to appreciate the question of how algorithms intersect with power and politics on a more philosophical and sociological scale—the concern of the second part of this chapter. While I do not mean to suggest that algorithms can be understood from either a technical or a sociological perspective—as if there exists one single object called an “algorithm” that we might understand from diferent perspectives—the aim is to show how dynamic both the notion of an algorithm and the concerns they foster are in order to introduce readers to the complexities of algorithmic power and politics. The third part of this chapter uses Foucault’s conceptualizations of power to map how power and politics intersect with algorithms as an emerging social concern. I make the argument that algorithms do not merely have power and politics; they are fundamentally productive of new ways of ordering the world. Importantly, algorithms do not work on their own but need to be understood as part of a much wider network of relations and practices. The view to which I am subscribing in this book (and which I will further elaborate on in the next chapter), sees algorithms as entangled, multiple, and eventful and, therefore, things that cannot be understood as being powerful in one way only.

A Beginning

H IS TO R I E S A N D T E C H N IC A L I T I E S

Let’s take a step back. What exactly do (most) people mean when they invoke the term “algorithm”? According to standard computer science definitions, an algorithm is a set of instructions for solving a problem or completing a task following a  carefully planned sequential order (Knuth, 1998). Although the algorithm is a key concept in computer science, its history dates back to the medieval notion of “algorism,” understood as a way of performing calculations with natural numbers. Algorism goes as far back as the 9th century when the Persian astronomer and mathematician Abdullah Muhammad bin Musa al-Khwarizmi (circa 780–850) was indirectly responsible for coining the term. When his scripts were translated into Latin in the 12th century, his name was rendered as “Algorithmi.”1 These scripts described the basic methods of arithmetic in the Hindu-Arabic numeral system, which much later formed the basic operations of computer processors (Miyazaki, 2012). As Wolfgang Thomas describes, many paragraphs of the scripts translated from al-Khwarizmi’s text “Computing with the Indian Numbers” started with the phrase “Dixit Algorizmi,” where algorithm referred to a “process of symbol manipulation”

20

I F . . . T H E N

PDF 物理页索引 31

文件中的第 32 页 · 印刷页码:21

(2015: 31). During the 17th century, the German philosopher Gotfried Wilhelm Leibniz (1646–1716) added a new dimension to symbolic computation by developing “the vision of calculating truths (true statements)” (Miyazaki, 2012).2 As far as a the prehistory of algorithms goes, Leibniz provided the groundwork for what later became known as Boolean algebra by “arithmetizing logic” and using if/then conditionals for calculating truth (Thomas, 2015). In Thomas’ account, the origin can be traced to Boole (1847) and his theory of Boolean algebra and continues with Frege’s 1879 introduction of a formal language in which mathematical statements could be expressed (see Thomas, 2015). For many historians, however, the history of algorithms proper starts with David Hilbert and what is called the Entscheidungsproblem, the challenge of whether an algorithm exists for deciding the universal validity or satisfiability of a given logical formula (Sommaruga & Strahm, 2015: xi). In 1936, Alan Turing famously solved this problem in the negative by reducing the problem to a notion of symbolic computation, which later became known as the Turing machine. Although Turing himself scarcely made direct reference to the term “algorithm,” contemporary mathematicians such as Alonzo Church (1903–1995) or Stephen C. Kleene (1909–1994) did (Miyazaki,  2012). In tracing the historical origins of the term “algorithm” and its role in the history of computing, Shintaro Miyazaki (2012) suggests that “algorithm” first entered common usage in the 1960s with the rise of scientific computation and higher-level programming languages such as Algol 58 and its derivatives. By the mid 20th century, then, “an algorithm was understood to be a set of defined steps that if followed in the correct order will computationally process input (instructions and/or data) to produce a desired outcome” (Kitchin, 2017: 16).

Perhaps the most common way to define an algorithm is to describe it as a recipe, understood as a step-by-step guide that prescribes how to obtain a certain goal, given specific parameters. Understood as a procedure or method for processing data, the algorithm as recipe would be analogous to the operational logic for making a cake out of flour, water, sugar, and eggs. Without the specific instructions for how to mix the eggs and flour or when to add the sugar or water, for instance, these ingredients would remain just that. For someone who has never baked a cake, step-bystep instructions would be critical if they wanted to bake one. For any computational process to be operational, the algorithm must be rigorously defined, that is, specified in such a way that it applies in all possible circumstances. A program will execute a certain section of code only if certain conditions are met. Otherwise, it takes an alternative route, which implies that particular future circumstances are already anticipated by the conditional construct of the “if. . . then statement” upon which most algorithms depend. The “if. . . then statement” is the most basic of all control flow statements, tasked with telling a program to execute a particular section of code only if the condition is deemed “true.” However, in order to be able to test and compute a “false” condition, the “if. . . then” statements needs to include an “else” statement, which essentially provides a secondary path of executing. In other words, while the “if. . . then” statement can only compute “true” statements, the “if. . . then . . . else” construct will be able to execute an alternate pathway as well.3 An algorithm essentially indicates what should happen when, a principle that programmers call “flow of control,” which is implemented in source code or pseudocode. Programmers usually control the flow by specifying certain procedures and parameters through a programming language. In principle, the algorithm is “independent of programming languages and independent of the machines that execute the programs” (Gofey, 2008: 15). The same type of instructions can be writen in the languages C, C#, or Python and still be the same algorithm. This makes the concept of the “algorithm” particularly powerful, given that what an algorithm signifies is an inherent assumption in all software design about order, sequence, and sorting. The actual steps are what is important, not the wording per se.

Th e M u l tip l icity of A lgo rith ms

21

PDF 物理页索引 32

文件中的第 33 页 · 印刷页码:22

Designing an algorithm to perform a certain task implies a simplification of the problem at hand. From an engineering perspective, the specific operation of an algorithm depends largely on technical considerations, including eficiency, processing time, and reduction of memory load—but also on the elegance of the code writen (Fuller, 2008; Knuth, 1984).4 The operation of algorithms depends on a variety of other elements—most fundamentally, on data structures.5 Tellingly, Niklaus Wirth’s (1985) pioneering work on “structured programming” is entitled Algorithms + Data Structures = Programs. To be actually operational, algorithms work in tandem not only with data structures but also with a whole assemblage of elements, including data types, databases, compilers, hardware, CPU, and so forth.6 Explaining why he starts his book with data structures and not algorithms, Wirth writes: “One has an intuitive feeling that data precede algorithms: You must have some objects before you can perform operations on them” (2004: 7). Furthermore, Wirth’s book title suggests that algorithms and programs are not the same. A program, or software, is more than its algorithms. Algorithms alone do not make software computable. In order to compute, the source code must be transformed into an executable file, which is not a one-step process. The transformation usually follows multiple steps, which include translation as well as the involvement of other software programs, such as compilers and linkers. The “object file” created by the compiler is an intermediate form and not itself directly executable. In order for a program to be executed, another device called a linker must combine several object files into a functional program of executable (or “.exe”) files.7 Software is quite literally the gathering or assembling of diferent code files into a single “executable.” While software might appear to be a single entity, it is fundamentally layered and dependent on a myriad of diferent relations and devices in order to function. To compute information efectively, then, algorithms are based on particular representations and structures of data. Despite the mutual interdependence of algorithms and data structures, “we can treat the two as analytically distinct” (Gillespie,  2014: 169). Given that my primary interest lies in the operations performed on data—what

22

I F . . . T H E N

PDF 物理页索引 33

文件中的第 34 页 · 印刷页码:23

Wirth defines as algorithms– and the social and cultural implication those operations have, the focus in this book will almost exclusively be on algorithms.

While no agreed-upon definition of algorithm exists, a few aspects have been described as important characteristics. For Donald Knuth (1998), who has writen one of the most important multivolume works on computer programming, algorithms have five broadly defined properties: finiteness, definiteness, input, output, and efectiveness. What is generally asked of an algorithm is that it produce a correct output and use resources eficiently (Cormen, 2013). From a technical standpoint, creating an algorithm is about breaking the problem down as eficiently as possible, which implies a careful planning of the steps to be taken and their sequence.

Take the problem of sorting, which is one of the most common tasks algorithms are deployed to solve. A given sorting problem may have many solutions; the algorithm that eventually gets applied is but one possible solution. In other words, an algorithm is a manifestation of a proposed solution. Just as there are multiple ways of sorting a bookshelf in some well-defined order—for example, according to alphabetical order by the author’s surname, by genre, or even by the color of the book jacket, diferent sorting algorithms (e.g., selection sort, merge sort, or quicksort) can be applied for the same task. Anyone who has ever tried to arrange a bookshelf according to the color of the book jacket will probably be able to understand how this specific organizational logic might have an aesthetically pleasing efect but also come with the added practical challenge of finding a particular book by a certain author (unless you have an excellent color memory). This is to say that algorithms, understood as forms of organizational logic, come with specific afordances that both enable and constrain. To use a well-known insight from science and technology studies (STS), such orderings are never neutral. Algorithms come with certain assumptions and values about the world on which they are acting. Compared to the archetypical example used in STS about the inherent politics of engineering and urban planning in the example of Robert Moses’ low-hanging bridges described by Langdon Winner (1986), the politics and values of algorithms are a really blatant example of that same logic as they explicitly decide, order, and filter the world in specific ways. Why some people still think of algorithms as neutral, given they are a relatively easy example of an STS value-laden technology, is a diferent question altogether. Ultimately, algorithms and the models used have consequences. In the example of the bookshelf, a color coding scheme might, for instance, imply that I might become less inclined to read books by the same author simply because I did not facilitate my thinking or decision-making process in terms of genre or author in the first place.

T H E L E A R N I N G T YP E O F A L G O R I T H M

An important distinction needs to be made between algorithms that are preprogrammed and behave more or less deterministically and algorithms that have the ability to “learn” or improve in performance over time. Given a particular input, a deterministic algorithm will always produce the same output by passing through the same sequence of steps. The learning type, however, will learn to predict outputs based on previous examples of relationships between input data and outputs. Unlike a deterministic algorithm that correctly sorts an alphabetized list, many of the algorithms that run the Internet today do not necessarily have one easily definable, correct result. The kinds of algorithms and techniques to which I am referring here are called machine learning, which is essentially the notion that we can now program a computer to learn by itself (Domingos, 2015). In contrast to the strict logical rules of traditional programming, machine learning is about writing programs that learn to solve the problem from examples. Whereas a programmer previously had to write all the “if. . . then” statements in anticipation of an outcome herself, machine learning algorithms let the computer learn the rules from a large number of training examples without being explicitly programmed to do so. In order to help reach a target goal, algorithms are “trained” on a corpus of data from which they may “learn” to make certain kinds of decisions without human oversight. Machines do not learn in the same sense that human do, although many of the algorithms used are based on artificial neural networks are inspired by the structure and functional aspects of  the brain’s deep architecture (Hecht-Nielsen, 1988). The kind of learning that machines do should be understood in a more functional sense: “They are capable of  changing their behavior to enhance their performance on some task through experience” (Surden, 2014: 89).

Th e M u l tip l icity of A lgo rith ms

23

PDF 物理页索引 34

文件中的第 35 页 · 印刷页码:24

Machine learning algorithms come in many diferent flavors. Similar to humans, the machine itself learns in diferent ways.8 One of the most common ways in which algorithms learn is called supervised learning. Essentially an inductive approach to learning, algorithms are given a training set comprising the characteristics  that engineers want the algorithm to detect and compare with new data (Flach, 2012). Importantly, the training set includes data about the desired output. When the training data do not include data about desired outputs, the approach is called unsupervised learning. Often, machine learning algorithms may fall somewhere in between: The data only contain a few desired outputs, which is also called semi-supervised learning (Domingos, 2015).9 Before an algorithm can be applied to learn from data, models have to be constructed that formalize the task and goals, so that it can be processed by a computer. For instance, before an algorithm can perform the task of finding the most important news feed stories, models have to be created to represent the relationship between news and relevance. As Mackenzie puts it:

The techniques of machine learning nearly all pivot around ways of transforming, constructing or imposing some kind of shape on the data and using that shape to discover, decide, classify, rank, cluster, recommend, label or predict what is happening or what will happen. (2015: 432)

24

IF . . . THEN

PDF 物理页索引 35

文件中的第 36 页 · 印刷页码:25

In data-intensive environments such as social media, machine learning algorithms have become a standard way of learning to recognize paterns in the data, to discover knowledge, and to predict the likelihood of user actions and tastes. Put another way, machine learning is largely enabled by proliferating data from which models may learn. In the age of so-called big data, having the biggest pool of data available from which to detect paterns is often seen as a competitive necessity. The bigger the database, so the story goes, the beter the conditions for algorithms to detect relevant paterns.

Models are central to the understanding of machine learning as “they are what is being learned from the data, in order to solve a given task” (Flach, 2012: 20). The way it works is that a pool of data is first mined (automatically processed) to identify regularities upon which subsequent decision-making can rely. The accumulated set of discovered relationships, then, produce the model, which subsequently “can be employed to automate the process of classifying entities or activities of interest, estimating the value of unobserved variables, or predicting future outcomes” (Barocas & Selbst, 2016: 7). As Joaquin Quiñonero Candela, Director of Applied Machine Learning at Facebook, says about the company’s machine learning philosophy:

  1. Get as much data as you can and make sure it is of highest quality 2. Distill your data into signals that will be maximally predictive—a process called feature-engineering 3. Once you have the most awesome data and tools for feature engineering, keep raising the capacity of your algorithms. (Candela, 2016)

Machine learning, then, is about using data to make models that have certain features. Feature engineering, or the process of extracting and selecting the most important features from the data, is arguably one of the most important aspects of machine learning. While feature extraction is usually performed manually, recent advances in deep learning now embed automatic feature engineering into the modeling process itself (Farias et al,  2016). If the algorithm operates on badly drawn features, the results will be poor, no mater how excellent the algorithm is.

How would feature engineering work in calculating such an abstract notion as relevance? One option might be to consider the frequency and types of content on which a specific user has clicked. However, we might also imagine a scenario in which “most important” is not about the frequency of clicks but, rather, the time spent watching or reading certain content. The point here is that the problem of determining what is “most important” depends on the data and the outcome you want to optimize. As Gillespie suggests, “All is in the service of the model’s understanding of the data and what it represents, and in service of the model’s goal and how it has been formalized” (2016a: 20). The understanding of data and what it represents, then, is not merely a mater of a machine that learns but also of humans who specify the states and outcomes in which they are interested in the first place.10 In the case of supervised learning, humans (the data miners and machine learning specialists) first need to specify the target variables (desired states and outcomes), which are then used to define “class labels”—“the diferent classes between which a model should be able to distinguish” (Barocas & Selbst, 2016: 8). Take the task of filtering spam, an area in which machine learning is commonly applied: The goal of the algorithm is to build an internal computer model that will ultimately allow the machine to make automated, accurate classification decisions (Surden, 2014: 91).11 However, learning tasks are far from alike. Classifying spam is one of the “easier” tasks as it typically merely operates on binary categories. Either something is classified as spam or it is not. But most of the tasks with which we are concerned in this book have to do with ranking and recommendations that cannot be broken down into binary categories. For example, the question of what constitutes newsworthiness or relevancy is not a straightforward task. As we shall see—particularly in chapters 4 and 6—there is no way to measure newsworthiness directly because the notion is a function of the particular way in which the respective industries and platforms have constructed their systems.12 Whether it is about ranking content in a feed or classifying email as spam, a useful model depends on the ongoing input of new data to optimize its performance.

Th e M u l tip l icity of A lgo rith ms

25

PDF 物理页索引 36

文件中的第 37 页 · 印刷页码:26

The botom line is that there are many diferent algorithms that can be used to “impose a shape on the data,” as Mackenzie put it. For predictive modelling, for example, well-known algorithmic techniques include: logistic regression models, the Naive Bayes classifier, k-nearest neighbors, support vector machines, random forests and neural networks (Mackenzie,  2015). However, as Bernhard Rieder (2017) points out, something like the Naive Bayes classifier is not yet an algorithm in a more restrictive understanding of the term. Rather, it outlines a common method—an “algorithmic technique”—used to solve specific computational problems. If we want to make it into an algorithm that can be run, we have to further specify it. For random forests, for example, you would have to specify the number of trees, and the number of splits to try in each tree. For neural networks you would have to specify the depth of the hidden layers. So in some sense, we are far away from an algorithm. Yet there are also algorithmic techniques for specifying these so-called hyperparameters.13 Many pieces of software also come with default parameters. Once you specify these parameters, and you have the data, then it is an “algorithm” in a narrow computational sense, whereas without them it is incomplete. What determines whether to use one technique over another “depends upon the domain (i.e., loan default prediction vs. image recognition), its demonstrated accuracy in classification, and available computational resources, among other concerns” (Burrell, 2016: 5). Take, for example, the problem of face recognition. With more than 350 million photos uploaded onto Facebook every day, face recognition is an important area in which Facebook is using machine learning.14 Algorithms are trained on a variety of existing data sets to learn how to detect faces in the wild. Depending on the specific task of recognition, however, diferent algorithms can be deployed. One of the simplest and fastest learning algorithms for this purpose is the nearest neighbor (Domingos, 2015: 179). In order to determine whether an image contains a face, the nearest neighbor algorithm works by finding the image most similar to it in Facebook’s entire database of labeled photos. “If” it contains a face, “then” the other one is presumed to contain a face as well. This approach is used, for example, in Facebook’s auto-tagging functionality. Given Facebook’s vast data pool, the company’s engineers are able to train algorithms to detect faces in ways that most photo-sharing sites cannot. Facebook’s artificial intelligence team has recently developed a system called DeepFace, which is supposedly able to identify faces at a 97.25% accuracy level, which is just slightly worse than the average human score of 97.53% (Taigman et al.,  2014). This system uses what is called “deep learning,” a technique that currently constitutes one of the leading and most advanced machine learning frameworks available. Deep learning is based on neural networks, a model most widely used in image and speech recognition. Modeled to emulate the way in which the human brain works, neural networks “use diferent layers of mathematical processing to make ever more sense of the information they are fed” (Condlife, 2015).15 In terms of image recognition, a system powered by neural networks, for example, would analyze pixel brightness on one layer, shapes and edges through another layer, actual content and image features on a third layer, and so on. Using diferent algorithms on every layer to process the information, the system would gain a more fine-grained understanding of the image.16

26

IF . . . THEN

PDF 物理页索引 37

文件中的第 38 页 · 印刷页码:27

As recent cases of image recognition failures have shown, machine learning is not without its problems, and there is much to be learned from cases in which machine learning goes awry. For example, in May 2015, Google was accused of having a “racist” algorithm when its newly launched Photos app tagged two black people in a photograph as “gorillas” (Barr, 2015). A similar incident happened when the photosharing service Flickr, powered by Yahoo’s neural network, labeled a person as an “ape” due to the color of his skin. While incidents like these are perfect examples of how the results of machine learning can be very problematic, they are also good examples of how the media, which often neglect to explain why certain inferences were made, frequently reports on algorithms, thus catering to an often shallow understanding of how these systems actually work. My hope is to show how we might beter understand the power and politics of algorithms if we try to take a more holistic approach by acknowledging the complexity and multiplicity of algorithms, machine learning and big data. Incidents such as these failed image-recognition tasks point to a core concern about dealing with algorithms, namely, the question of agency, responsibility, and accountability to which I shall return in the next chapter. Sufice it to mention at this point the importance of the training data as another element for understanding the possibilities and limits of machine learning. As Barocas and Selbst point out, “what a model learns depends on the examples to which it has been exposed” (2016: 10). This raises an important question with regards to accusations of a “racist” algorithm: What was the initial data set that Google used to train its image recognition algorithms, and whose faces did it depict? What generalizable signals/paterns was it picking up on?

Th e M u l tip l icity of A lgo rith ms

27

PDF 物理页索引 38

文件中的第 39 页 · 印刷页码:28

Understood as sets of instructions that direct the computer to perform a specific task, algorithms are essentially used to control the flow of actions and future events. Sometimes, the flow of events is more or less known in advance, as in the case of algorithms sorting an alphabetized list. More often than not in the world of machine learning, however, the outcome of events remains uncertain. Machine learning algorithms reduce this uncertainty by making predictions about the likelihoods of outcomes. Put diferently, machine learning is about strengthening the probability of some event happening, based on evolving information. This is also the principle of Bayes’ theorem: the “simple rule for updating your degree of belief in a hypothesis when you receive new evidence” (Domingos,  2015: 144).17 Following Wendy Chun, then, we might understand an algorithm as a “strategy, or a plan of action— based on interactions with unfolding events” (2011: 126). This implies that algorithms do not simply change with the event but are always in becoming since events are not static but unfolding. In the case of algorithmically driven sites such as Facebook, users are crucial to the development and maintenance of the underlying coding systems as they constantly feed the system with new data. As Mukund Narasimhan, a software engineer at Facebook, tellingly suggests: “Everything in Facebook is a work in progress.” The models Facebook uses to design the system are evolving because the data is changing. This means that the exact ways in which the algorithms work are also constantly tweaked by employees because of the fact that everything else changes (Narasimhan, 2011).

Algorithms do not simply change with the event; they also have the ability to change the event. In the era of big data and data mining, algorithms have the ability performatively to change the way events unfold or, at the very least, change their interpretation. A good example of this is the failed Google Flu Tracker, which was operative from September 2011 to August 2013. Often heralded as the prime example of what big data could do, Google’s Flu Tracker was designed to predict outbreaks of flu before they happened, based on mining data from their vast troves of search queries. According to Google, they “found a close relationship between how many people search for flu-related topics and how many people actually have flu symptoms” (Walsh, 2014). However, in February 2013, the Flu tracker made headlines because it turned out that it had predicted “more than double the proportion of doctor visits for influenza-like illness than the Centers for Disease Control and Prevention,” which had been used as a de facto predictor until then (Lazer et al., 2014: 1203). The fact that the tracker was dependent upon Google’s search algorithms played a significant part in skewing the results for flu trends. By recommending search terms to its users through its autocomplete feature, Google itself was producing the conditions it was trying to merely describe and predict. As Walsh (2014) put it: “If the data isn’t reflecting the world, how can it predict what will happen?”

28

IF . . . THEN

PDF 物理页索引 39

文件中的第 40 页 · 印刷页码:29

Algorithms as a Social Concern

Incidents like the Google Flu tracker or the more recent examples of data and algorithmic discrimination outlined above have arguably encouraged many more social scientists and humanities scholars to explore the ethical, political, and social implications that these digital infrastructures and systems have. Since the first cycle of hype and optimism concerning the rise of big data seems to be fading gradually, we are now seeing a growing scholarly interest in what Tarleton Gillespie and Nick Seaver have termed “critical algorithm studies.” Over the past decade or so, work spanning sociology, anthropology, science and technology studies, geography, communication, media studies, and legal studies has started to focus critical atention not just on software but algorithms more specifically (Amoore, 2009; Ananny, 2016; Beer, 2009; Cheney-Lippold, 2011, Diakopoulos, 2015; Gillespie, 2014; Introna, 2016; Karppi & Crawford, 2016; Lenglet, 2011; Mackenzie, 2015; McKelvey, 2014; Seaver, 2013; Striphas,  2015; Wilf,  2013; Ziewitz,  2016). Whereas computer scientists typically focus on designing eficient algorithms, a sociological or cultural approach to algorithms is starting to emerge, focusing on what algorithms are actually doing as part of situated practices. Indeed, an algorithmic logic of information processing and dissemination has become pervasive in such fields as finance (Mackenzie, 2015; Pasquale, 2015), transportation (Kitchin & Dodge, 2011), the travel sector (Orlikowski & Scot, 2015), higher education (Introna, 2011; Williamson, 2015), journalism (Anderson, 2013; Diakopoulos, 2015; Dörr, 2016), security (Amoore, 2013; Cheney-Lippold,  2016), surveillance (Braverman,  2014; Introna & Wood, 2004), popular culture (Beer,  2013), and the media industry more generally (Hallinan & Striphas, 2016; Napoli, 2014).18 Social scientists and humanities scholars are not primarily concerned with the technical details of algorithms or their underlying systems but, rather, with the meanings and implications that algorithmic systems may have. As Gillespie (2016a) suggests, critical algorithm scholars are often more concerned with the algorithm as an adjective, understood as the social phenomena that are driven by and commited to algorithmic systems.

While the growing concern over algorithms may be a relatively recent phenomenon in the context of the social sciences and humanities—in part, spurred by the rise of big data—the underlying social concerns have a much longer history. The more pervasive use of algorithms in a wide range of societal sectors and institutions should be seen along a much longer continuum of scholarship concerned with the intersection of technology and society, the social history of computing, and related fields such as new media studies, software studies, platform studies, STS, and humancomputer interaction (HCI). Work in these domains has contributed knowledge about the power and politics of computing technologies, software systems, and information infrastructures relevant to our present concern with the role of algorithms in the contemporary media landscape. Take, for example, the growing interest in software as a cultural object of study investigated in the field of software studies (Fuller, 2008). During the past decade or so, social scientists and humanities scholars have called for an expanded understanding of code that extends significantly beyond its technical definitions (Berry,  2011; Fuller,  2008; Kitchin & Dodge, 2011; Mackenzie, 2006). Software studies can be understood as a cultural studies approach to the “stuf of software” (Fuller,  2008), where what counts as “stuf” remains relatively open to interpretation. This conceptual openness is, perhaps, what distinguishes software studies from computer science approaches since what counts as software is seen as a “shifting nexus of relations, forms and practices” (Mackenzie, 2006: 19). This is not to say that scholars interested in software as a cultural object of study dismiss the importance of materiality or technical operations, quite the contrary. While calling for an expanded understanding of the meaning and significance of software as part of everyday life, scholars within software studies also maintain a high level of sensibility toward the technical and functional dimensions of software. In his book Protocol, Alexander Galloway makes the case that “it is not only worthwhile, but also necessary to have a technical as well as theoretical understanding of any given technology” (2004: xiii). In order to understand power relationships at play in the “control society,” Galloway argues that it is crucial to start with the questions of how technology (in this case, protocols such as HTP) works and who it works for. In fact, not addressing the technical details of software or algorithms as part of a sociological or critical inquiry is seen as problematic (Rieder, 2017: 101). While media scholars difer in their assessment of how necessary coding skills are to a critical understanding of software and algorithms, some technical knowledge is clearly desirable.19

Th e M u l tip l icity of A lgo rith ms

29