Quotient automaton

Quotient automaton

In computer science, in particular in formal language theory, a quotient automaton can be obtained from a given nondeterministic finite automaton by joining some of its states. The quotient recognizes a superset of the given automaton; in some cases, handled by the Myhill–Nerode theorem, both languages are equal. == Formal definition == A (nondeterministic) finite automaton is a quintuple A = ⟨Σ, S, s0, δ, Sf⟩, where: Σ is the input alphabet (a finite, non-empty set of symbols), S is a finite, non-empty set of states, s0 is the initial state, an element of S, δ is the state-transition relation: δ ⊆ S × Σ × S, and Sf is the set of final states, a (possibly empty) subset of S. A string a1...an ∈ Σ is recognized by A if there exist states s1, ..., sn ∈ S such that ⟨si-1,ai,si⟩ ∈ δ for i=1,...,n, and sn ∈ Sf. The set of all strings recognized by A is called the language recognized by A; it is denoted as L(A). For an equivalence relation ≈ on the set S of A’s states, the quotient automaton A/≈ = ⟨Σ, S/≈, [s0], δ/≈, Sf/≈⟩ is defined by the input alphabet Σ being the same as that of A, the state set S/≈ being the set of all equivalence classes of states from S, the start state [s0] being the equivalence class of A’s start state, the state-transition relation δ/≈ being defined by δ/≈([s],a,[t]) if δ(s,a,t) for some s ∈ [s] and t ∈ [t], and the set of final states Sf/≈ being the set of all equivalence classes of final states from Sf. The process of computing A/≈ is also called factoring A by ≈. == Example == For example, the automaton A shown in the first row of the table is formally defined by ΣA = {0,1}, SA = {a,b,c,d}, sA0 = a, δA = { ⟨a,1,b⟩, ⟨b,0,c⟩, ⟨c,0,d⟩ }, and SAf = { b,c,d }. It recognizes the finite set of strings { 1, 10, 100 }; this set can also be denoted by the regular expression "1+10+100". The relation (≈) = { ⟨a,a⟩, ⟨a,b⟩, ⟨b,a⟩, ⟨b,b⟩, ⟨c,c⟩, ⟨c,d⟩, ⟨d,c⟩, ⟨d,d⟩ }, more briefly denoted as a≈b,c≈d, is an equivalence relation on the set {a,b,c,d} of automaton A’s states. Building the quotient of A by that relation results in automaton C in the third table row; it is formally defined by ΣC = {0,1}, SC = {a,c}, sC0 = a, δC = { ⟨a,1,a⟩, ⟨a,0,c⟩, ⟨c,0,c⟩ }, and SCf = { a,c }. It recognizes the finite set of all strings composed of arbitrarily many 1s, followed by arbitrarily many 0s, i.e. { ε, 1, 10, 100, 1000, ..., 11, 110, 1100, 11000, ..., 111, ... }; this set can also be denoted by the regular expression "10". Informally, C can be thought of resulting from A by glueing state a onto state b, and glueing state c onto state d. The table shows some more quotient relations, such as B = A/a≈b, and D = C/a≈c. == Properties == For every automaton A and every equivalence relation ≈ on its states set, L(A/≈) is a superset of (or equal to) L(A). Given a finite automaton A over some alphabet Σ, an equivalence relation ≈ can be defined on Σ by x ≈ y if ∀ z ∈ Σ: xz ∈ L(A) ↔ yz ∈ L(A). By the Myhill–Nerode theorem, A/≈ is a deterministic automaton that recognizes the same language as A. As a consequence, the quotient of A by every refinement of ≈ also recognizes the same language as A.

Display list

A display list, also called a command list in Direct3D 12 and a command buffer in Vulkan, is a series of graphics commands or instructions that are run when the list is executed. Systems that make use of display list functionality are called retained mode systems, while systems that do not are as opposed to immediate mode systems. In OpenGL, display lists are useful to redraw the same geometry or apply a set of state changes multiple times. This benefit is also used with Direct3D 12's bundle command lists. In Direct3D 12 and Vulkan, display lists are regularly used for per-frame recording and execution. == Origins in vector displays == The vector monitors or calligraphic displays of the 1960s and 1970s used electron beam deflection to draw line segments, points, and sometimes curves directly on a CRT screen. Because the image would immediately fade, it needed to be redrawn many times a second (storage tube CRTs retained the image until blanked, but they were unsuitable for interactive graphics). To refresh the display, a dedicated CPU called a Display Processor or Display Processing Unit (DPU) was used, which had a memory buffer for a "display list", "display file", or "display program" containing line segment coordinates and other information. Advanced Display Processors also supported control flow instructions, which were useful for drawing repetitive graphics such as text, and some could perform coordinate transformations such as 3D projection. == Home computer display list functionality == One of the earliest systems with a true display list was the Atari 8-bit computers. The display list (actually called so in Atari terminology) is a series of instructions for ANTIC, the video co-processor used in these machines. This program, stored in the computer's memory and executed by ANTIC in real-time, can specify blank lines, any of six text modes and eight graphics modes, which sections of the screen can be horizontally or vertically fine-scrolled, and trigger Display List Interrupts (called raster interrupts or HBI on other systems). The Amstrad PCW family contains a Display List function called the 'Roller RAM'. This is a 512-byte RAM area consisting of 256 16-bit pointers in RAM, one for each line of the 720 × 256 pixel display. Each pointer identifies the location of 90 bytes of monochrome pixels that hold the line's 720 pixel states. The 90 bytes of 8 pixel states are spaced at 8-byte intervals, so there are 7 unused bytes between each byte of pixel data. This suits how the text-orientated PCW constructs a typical screen buffer in RAM, where the first character's 8 rows are stored in the first 8 bytes, the second character's rows in the next 8 bytes, and so on. The Roller RAM was implemented to speed up display scrolling as it would have been unacceptably slow for its 3.4 MHz Z80 to move up the 23 KB display buffer 'by hand' i.e. in software. The Roller RAM starting entry used at the beginning of a screen refresh is controlled by a Z80-writable I/O register. Therefore, the screen can be scrolled simply by changing this I/O register. Another system using a Display List-like feature in hardware is the Amiga, which, not coincidentally, was also designed by some of the same people who developed the custom hardware for the Atari 8-bit computers. Once directed to produce a display mode, it would continue to do so automatically for every following scan line. The computer also included a dedicated co-processor, called "Copper", which ran a simple program or 'Copper List' intended for modifying hardware registers in sync with the display. The Copper List instructions could direct the Copper to wait for the display to reach a specific position on the screen, and then change the contents of hardware registers. In effect, it was a processor dedicated to servicing raster interrupts. The Copper was used by Workbench to mix multiple display modes (multiple resolutions and color palettes on the monitor at the same time), and by numerous programs to create rainbow and gradient effects on the screen. The Amiga Copper was also capable of reconfiguring the sprite engine mid-frame, with only one scanline of delay. This allowed the Amiga to draw more than its 8 hardware sprites, so long as the additional sprites did not share scanlines (or the one scanline gap) with more than 7 other sprites. i.e., so long as at least one sprite had finished drawing, another sprite could be added below it on the screen. Additionally, the later 32-bit AGA chipset allowed the drawing of bigger sprites (more pixels per row) while retaining the same multiplexing. The Amiga also had dedicated block-shifter ("blitter") hardware, which could draw larger objects into a framebuffer. This was often used in place of, or in addition to, sprites. In more primitive systems, the results of a display list can be simulated, though at the cost of CPU-intensive writes to certain display modes, color control, or other visual effect registers in the video device, rather than a series of rendering commands executed by the device. Thus, one must create the displayed image using some other rendering process, either before or while the CPU-driven display generation executes. In many cases, the image is also modified or re-rendered between frames. The image is then displayed in various ways, depending on the exact way in which the CPU-driven display code is implemented. Examples of the results possible on these older machines requiring CPU-driven video include effects such as Commodore 64/128's FLI mode, or Rainbow Processing on the ZX Spectrum. == Usage in OpenGL == To delimit a display list, the glNewList and glEndList functions are used, and to execute the list, the glCallList function is used. Almost all rendering commands that occur between the function calls are stored in the display list. Commands that affect the client state are not stored in display lists. Display lists are named with an integer value, and creating a display list with the same name as one already created overrides the first. The glNewList function expects two arguments: an integer representing the name of the list, and an enumeration for the compilation mode. The two modes include GL_COMPILE_AND_EXECUTE, which compiles and immediately executes, and GL_COMPILE, which only compiles the list. Display lists enable the use of the retained mode rendering pattern, which is a system in which graphics commands are recorded (retained) to execute in succession at a later time. This is contrary to immediate mode, where graphics commands are immediately executed on client calls. == Usage in Direct3D 12 == Command lists are created using the ID3D12Device::CreateCommandList function. Command lists may be created in several types: direct, bundle, compute, copy, video decode, video process, and video encoding. Direct command lists specify that a command list the GPU can execute, and doesn't inherit any GPU state. Bundles, are best used for storing and executing small sets of commands any number of times. This is used differently than regular command lists, where commands stored in a command list are typically executed only once. Compute command lists are used for general computations, with a common use being calculating mipmaps. A copy command list is strictly for copying and the video decode and video process command lists are for video decoding and processing respectively. Upon creation, command lists are in the recording state. Command lists may be re-used by calling the ID3D12GraphicsCommandList::Reset function. After recording commands, the command list must be transitioned out of the recording state by calling ID3D12GraphicsCommandList::Close. The command list is then executed by calling ID3D12CommandQueue::ExecuteCommandLists.

Best AI Voice Assistants in 2026

Trying to pick the best AI voice assistant? An AI voice assistant is software that uses machine learning to help you get more done — it scales effortlessly from a single task to thousands. The best picks balance beginner-friendly simplicity with the depth power users need, and they ship updates often. Whether you are a beginner or a pro, the right AI voice assistant slots into your workflow and pays for itself fast. This guide breaks down the top picks, their pros and cons, and who each one is best for.

Markov switching multifractal

In financial econometrics (the application of statistical methods to economic data), the Markov-switching multifractal (MSM) is a model of asset returns developed by Laurent E. Calvet and Adlai J. Fisher that incorporates stochastic volatility components of heterogeneous durations. MSM captures the outliers, log-memory-like volatility persistence and power variation of financial returns. In currency and equity series, MSM compares favorably with standard volatility models such as GARCH(1,1) and FIGARCH both in- and out-of-sample. MSM is used by practitioners in the financial industry for different types of forecasts. == MSM specification == The MSM model can be specified in both discrete time and continuous time. === Discrete time === Let P t {\displaystyle P_{t}} denote the price of a financial asset, and let r t = ln ⁡ ( P t / P t − 1 ) {\displaystyle r_{t}=\ln(P_{t}/P_{t-1})} denote the return over two consecutive periods. In MSM, returns are specified as r t = μ + σ ¯ ( M 1 , t M 2 , t . . . M k ¯ , t ) 1 / 2 ϵ t , {\displaystyle r_{t}=\mu +{\bar {\sigma }}(M_{1,t}M_{2,t}...M_{{\bar {k}},t})^{1/2}\epsilon _{t},} where μ {\displaystyle \mu } and σ {\displaystyle \sigma } are constants and { ϵ t {\displaystyle \epsilon _{t}} } are independent standard Gaussians. Volatility is driven by the first-order latent Markov state vector: M t = ( M 1 , t M 2 , t … M k ¯ , t ) ∈ R + k ¯ . {\displaystyle M_{t}=(M_{1,t}M_{2,t}\dots M_{{\bar {k}},t})\in R_{+}^{\bar {k}}.} Given the volatility state M t {\displaystyle M_{t}} , the next-period multiplier M k , t + 1 {\displaystyle M_{k,t+1}} is drawn from a fixed distribution M with probability γ k {\displaystyle \gamma _{k}} , and is otherwise left unchanged. The transition probabilities are specified by γ k = 1 − ( 1 − γ 1 ) ( b k − 1 ) {\displaystyle \gamma _{k}=1-(1-\gamma _{1})^{(b^{k-1})}} . The sequence γ k {\displaystyle \gamma _{k}} is approximately geometric γ k ≈ γ 1 b k − 1 {\displaystyle \gamma _{k}\approx \gamma _{1}b^{k-1}} at low frequency. The marginal distribution M has a unit mean, has a positive support, and is independent of k. ==== Binomial MSM ==== In empirical applications, the distribution M is often a discrete distribution that can take the values m 0 {\displaystyle m_{0}} or 2 − m 0 {\displaystyle 2-m_{0}} with equal probability. The return process r t {\displaystyle r_{t}} is then specified by the parameters θ = ( m 0 , μ , σ ¯ , b , γ 1 ) {\displaystyle \theta =(m_{0},\mu ,{\bar {\sigma }},b,\gamma _{1})} . Note that the number of parameters is the same for all k ¯ > 1 {\displaystyle {\bar {k}}>1} . === Continuous time === MSM is similarly defined in continuous time. The price process follows the diffusion: d P t P t = μ d t + σ ( M t ) d W t , {\displaystyle {\frac {dP_{t}}{P_{t}}}=\mu dt+\sigma (M_{t})\,dW_{t},} where σ ( M t ) = σ ¯ ( M 1 , t … M k ¯ , t ) 1 / 2 {\displaystyle \sigma (M_{t})={\bar {\sigma }}(M_{1,t}\dots M_{{\bar {k}},t})^{1/2}} , W t {\displaystyle W_{t}} is a standard Brownian motion, and μ {\displaystyle \mu } and σ ¯ {\displaystyle {\bar {\sigma }}} are constants. Each component follows the dynamics: The intensities vary geometrically with k: γ k = γ 1 b k − 1 . {\displaystyle \gamma _{k}=\gamma _{1}b^{k-1}.} When the number of components k ¯ {\displaystyle {\bar {k}}} goes to infinity, continuous-time MSM converges to a multifractal diffusion, whose sample paths take a continuum of local Hölder exponents on any finite time interval. == Inference and closed-form likelihood == When M {\displaystyle M} has a discrete distribution, the Markov state vector M t {\displaystyle M_{t}} takes finitely many values m 1 , . . . , m d ∈ R + k ¯ {\displaystyle m^{1},...,m^{d}\in R_{+}^{\bar {k}}} . For instance, there are d = 2 k ¯ {\displaystyle d=2^{\bar {k}}} possible states in binomial MSM. The Markov dynamics are characterized by the transition matrix A = ( a i , j ) 1 ≤ i , j ≤ d {\displaystyle A=(a_{i,j})_{1\leq i,j\leq d}} with components a i , j = P ( M t + 1 = m j | M t = m i ) {\displaystyle a_{i,j}=P\left(M_{t+1}=m^{j}|M_{t}=m^{i}\right)} . Conditional on the volatility state, the return r t {\displaystyle r_{t}} has Gaussian density f ( r t | M t = m i ) = 1 2 π σ 2 ( m i ) exp ⁡ [ − ( r t − μ ) 2 2 σ 2 ( m i ) ] . {\displaystyle f(r_{t}|M_{t}=m^{i})={\frac {1}{\sqrt {2\pi \sigma ^{2}(m^{i})}}}\exp \left[-{\frac {(r_{t}-\mu )^{2}}{2\sigma ^{2}(m^{i})}}\right].} === Conditional distribution === === Closed-form Likelihood === The log likelihood function has the following analytical expression: ln ⁡ L ( r 1 , … , r T ; θ ) = ∑ t = 1 T ln ⁡ [ ω ( r t ) . ( Π t − 1 A ) ] . {\displaystyle \ln L(r_{1},\dots ,r_{T};\theta )=\sum _{t=1}^{T}\ln[\omega (r_{t}).(\Pi _{t-1}A)].} Maximum likelihood provides reasonably precise estimates in finite samples. === Other estimation methods === When M {\displaystyle M} has a continuous distribution, estimation can proceed by simulated method of moments, or simulated likelihood via a particle filter. == Forecasting == Given r 1 , … , r t {\displaystyle r_{1},\dots ,r_{t}} , the conditional distribution of the latent state vector at date t + n {\displaystyle t+n} is given by: Π ^ t , n = Π t A n . {\displaystyle {\hat {\Pi }}_{t,n}=\Pi _{t}A^{n}.\,} MSM often provides better volatility forecasts than some of the best traditional models both in and out of sample. Calvet and Fisher report considerable gains in exchange rate volatility forecasts at horizons of 10 to 50 days as compared with GARCH(1,1), Markov-Switching GARCH, and Fractionally Integrated GARCH. Lux obtains similar results using linear predictions. == Applications == === Multiple assets and value-at-risk === Extensions of MSM to multiple assets provide reliable estimates of the value-at-risk in a portfolio of securities. === Asset pricing === In financial economics, MSM has been used to analyze the pricing implications of multifrequency risk. The models have had some success in explaining the excess volatility of stock returns compared to fundamentals and the negative skewness of equity returns. They have also been used to generate multifractal jump-diffusions. == Related approaches == MSM is a stochastic volatility model with arbitrarily many frequencies. MSM builds on the convenience of regime-switching models, which were advanced in economics and finance by James D. Hamilton. MSM is closely related to the Multifractal Model of Asset Returns. MSM improves on the MMAR's combinatorial construction by randomizing arrival times, guaranteeing a strictly stationary process. MSM provides a pure regime-switching formulation of multifractal measures, which were pioneered by Benoit Mandelbrot.

Marcus Hutter

Marcus Hutter (born 14 April 1967 in Munich) is a German computer scientist, professor and artificial intelligence researcher. As a senior researcher at DeepMind, he studies the mathematical foundations of artificial general intelligence. Hutter studied physics and computer science at the Technical University of Munich. In 2000, he joined Jürgen Schmidhuber's group at the Dalle Molle Institute for Artificial Intelligence Research in Manno, Switzerland. He developed a mathematical formalism of artificial general intelligence named AIXI. He has served as a professor at the College of Engineering, Computing and Cybernetics of the Australian National University in Canberra, Australia. == Research == Starting in 2000, Hutter developed and published a mathematical theory of artificial general intelligence, AIXI, based on idealised intelligent agents and reward-motivated reinforcement learning. His first book Universal Artificial Intelligence: Sequential Decisions Based on Algorithmic Probability was published in 2005 by Springer. Also in 2005, Hutter published with his doctoral student Shane Legg an intelligence test for artificial intelligence devices. In 2009, Hutter developed and published the theory of feature reinforcement learning. In 2014, Lattimore and Hutter published an asymptotically optimal extension of the AIXI agent. An accessible podcast with Lex Fridman about his theory of Universal AI appeared in 2021 and a more technical follow-up with Tim Nguyen in 2024 in the Cartesian Cafe. His new (2024) book also gives a more accessible introduction to Universal AI and progress in the 20 years since his first book, including a chapter on ASI safety, which featured as a keynote at the inaugural workshop on AI safety in Sydney. == Hutter Prize == In 2006, Hutter announced the Hutter Prize for Lossless Compression of Human Knowledge, with a total of €50,000 in prize money. In 2020, Hutter raised the prize money for the Hutter Prize to €500,000.

Adobe Prelude

Adobe Prelude was an ingest and logging software application for tagging media with metadata for searching, post-production workflows, and footage lifecycle management. Adobe Prelude is also made to work closely with Adobe Premiere Pro. It is part of the Adobe Creative Cloud and is geared towards professional video editing alone or with a group. The software also offers features like rough cut creation. A speech transcription feature was removed in December 2014. == History == Adobe announced that on April 23, 2012 Adobe OnLocation would be shut down and Adobe Prelude would launch on May 7, 2012. Adobe stated OnLocation's production was stopping because of the growing trend in the industry toward tapeless, native workflows, Adobe stresses that Adobe Prelude is not a direct replacement for OnLocation. Adobe OnLocation was available in CS5 but not in CS6 and Adobe Prelude is only available in CS6. Adobe still offers technical support for OnLocation. In 2021, Adobe announced they would be discontinuing Adobe Prelude, starting by removing it from their website on September 8, 2021. Support for existing users will continue through September 8, 2024. == Features == Prelude is used to tag media, log data, create and export metadata and generate rough cuts that can be sent to Adobe Premiere Pro. A user can add a tag to a piece of media that will show up on Premiere Pro or if another user opens that media with Prelude. Ingest Footage Prelude can ingest all kinds of file types. Once ingested, Prelude can duplicate, transcode and verify the files. Log Footage Prelude can log data only using the keyboard. Create Rough Cuts Prelude is able to generate Rough Cuts. Rough Cuts are a combination of sub clips that will hold any metadata a user feeds into it. Rough cuts can hold metadata such as markers and comments, and this metadata will stay on this footage. Workflow Accessibility Prelude is an XMP - based open platform that allows for custom integration into many video editing platforms. == Features from OnLocation == Many features from Adobe OnLocation went to Adobe Prelude or Adobe Premiere Pro. Adobe OnLocation thrived on tape - based cameras and setting up a shot before shooting it, with the change in the industry, this problem is irrelevant in post production. Adobe OnLocation also allowed the user to add tags and scripting metadata that would carry over to Premiere Pro. OnLocation also had a Media Browser pane, which is the standard for any Adobe program today, Prelude has this Media Browser as well. == Prelude Live Logger == Prelude Live Logger is an application integrated with Prelude CC. Prelude Live Logger is designed to capture notes to use during video logging and editing while you shoot footage on an iPad's camera. Editors can import and combine this metadata with footage from Prelude throughout editing to facilitate various tasks.

Timnit Gebru

Timnit W. Gebru (Amharic and Tigrinya: ትምኒት ገብሩ; 1982/1983) is an Eritrean Ethiopian-born computer scientist who works in the fields of artificial intelligence (AI), algorithmic bias and data mining. She is a co-founder of Black in AI, an advocacy group that has pushed for more Black roles in AI development and research. She is the founder of the Distributed Artificial Intelligence Research Institute (DAIR). In December 2020, public controversy erupted over the circumstances surrounding Gebru's departure from Google, where she was technical co-lead of the Ethical Artificial Intelligence Team. Gebru had coauthored a paper on the risks of large language models (LLMs) acting as stochastic parrots, and submitted it for publication. According to Jeff Dean, head of Google AI, the paper was submitted without waiting for Google's internal review, which then asserted that it ignored too much relevant research. Google management requested that Gebru either withdraw the paper or remove the names of all the authors employed by Google. Gebru requested the identity and feedback of every reviewer, and stated that if Google refused, she would talk to her manager about "a last date". Google terminated her employment immediately, stating that they were accepting her resignation. Gebru maintained that she had not formally offered to resign, and only threatened to. Gebru has been widely recognized for her expertise in the ethics of artificial intelligence. She was named one of the World's 50 Greatest Leaders by Fortune and one of Nature's ten people who shaped science in 2021, and in 2022, one of Time's most influential people. == Early life and education == Gebru was raised in Addis Ababa, Ethiopia. Her father, an electrical engineer with a Doctor of Philosophy (PhD), died when she was five years old, and she was raised by her mother, an economist. Both her parents are from Eritrea. When Gebru was 15, during the Eritrean–Ethiopian War, she fled Ethiopia after some of her family were deported to Eritrea and compelled to fight in the war. She was initially denied a U.S. visa and briefly lived in Ireland, but she eventually received political asylum in the U.S., an experience she said was "miserable". Gebru settled in Somerville, Massachusetts to attend high school, where she says she immediately started to experience racial discrimination, with some teachers refusing to allow her to take certain Advanced Placement courses, despite being a high-achiever. After she completed high school, an encounter with the police set Gebru on a course toward a focus on ethics in technology. A friend of hers, a Black woman, was assaulted in a bar, and Gebru called the police to report it. She says that instead of filing the assault report, her friend was arrested and remanded to a cell. Gebru called it a pivotal moment and a "blatant example of systemic racism." In 2001, Gebru was accepted at Stanford University. There, she earned her Bachelor of Science and Master of Science degrees in electrical engineering and her PhD in computer vision in 2017. Gebru was advised during her PhD program by Fei-Fei Li. During the 2008 United States presidential election, Gebru canvassed in support of Barack Obama. Gebru presented her doctoral research at the 2017 LDV Capital Vision Summit competition, where computer vision scientists present their work to members of industry and venture capitalists. Gebru won the competition, starting a series of collaborations with other entrepreneurs and investors. Both during her PhD program in 2016 and in 2018, Gebru returned to Ethiopia with Jelani Nelson's programming campaign, AddisCoder. While working on her PhD, Gebru authored a paper that was never published about her concern over the future of AI. She wrote of the dangers of the lack of diversity in the field, centered on her experiences with the police and on a ProPublica investigation into predictive policing, which revealed a projection of human biases in machine learning. In the paper, she scathed the "boy's club culture", reflecting on her experiences at conference gatherings of drunken male attendees sexually harassing her, and criticized the hero worship of the field's celebrities. == Career == === 2004–2013: Software development at Apple === Gebru joined Apple as an intern while at Stanford, working in their hardware division making circuitry for audio components, and was offered a full-time position the following year. Of her work as an audio engineer, her manager told Wired she was "fearless", and well-liked by her colleagues. During her tenure at Apple, Gebru became more interested in building software, namely computer vision that could detect human figures. She went on to develop signal processing algorithms for the first iPad. At the time, she said she did not consider the potential use for surveillance, saying "I just found it technically interesting." Long after leaving the company, during the #AppleToo movement in the summer of 2021, which was led by Apple engineer Cher Scarlett, who consulted with Gebru, Gebru revealed she experienced "so many egregious things" and "always wondered how they manage[d] to get out of the spotlight." She said that accountability at Apple was long overdue, and warned they could not continue to fly under the radar for much longer. Gebru also criticized the way the media covers Apple and other tech giants, saying that the press helps shield such companies from public scrutiny. === 2013–2017: Research at Stanford and Microsoft === In 2013, Gebru joined Fei-Fei Li's lab at Stanford, where she combined deep learning with Google Street View to estimate the demographics of United States neighbourhoods, showing that socioeconomic attributes such as voting patterns, income, race, and education can be inferred from observations of cars. In 2015, Gebru attended the field's top conference, Neural Information Processing Systems (NIPS), in Montreal, Canada. Out of 3,700 attendees, she noted she was one of only a few Black researchers. When she attended again the following year, she kept a tally and noted that there were only five Black men and that she was the only Black woman out of 8,500 delegates. Together with her colleague Rediet Abebe, Gebru founded Black in AI, a community of Black researchers working in artificial intelligence that aims to increase the presence, visibility, and well-being of Black professionals and leaders within the field. In the summer of 2017, Gebru joined Microsoft as a postdoctoral researcher in the Fairness, Accountability, Transparency, and Ethics in AI (FATE) lab. In 2017, Gebru spoke at the Fairness and Transparency conference, where MIT Technology Review interviewed her about biases that exist in AI systems and how adding diversity in AI teams can fix that issue. In her interview with Jackie Snow, Snow asked Gebru, "How does the lack of diversity distort artificial intelligence and specifically computer vision?" and Gebru pointed out that there are biases that exist in the software developers. While at Microsoft, Gebru co-authored a research paper called Gender Shades, which became the namesake of a project of a broader Massachusetts Institute of Technology project led by co-author Joy Buolamwini. The pair investigated facial recognition software, finding that in one particular implementation Black women were 35% less likely to be recognized than White men. === 2018–2020: Artificial intelligence ethics at Google === Gebru joined Google in 2018, where she co-led a team on the ethics of artificial intelligence with Margaret Mitchell. She studied the implications of artificial intelligence, looking to improve the ability of technology to do social good. In 2019, Gebru and other artificial intelligence researchers "signed a letter calling on Amazon to stop selling its facial-recognition technology to law enforcement agencies because it is biased against women and people of color", citing a study that was conducted by MIT researchers showing that Amazon's facial recognition system had more trouble identifying darker-skinned females than any other technology company's facial recognition software. In a New York Times interview, Gebru has further expressed that she believes facial recognition is too dangerous to be used for law enforcement and security purposes at present. === Exit from Google === In 2020 Gebru and five co-authors wrote a paper titled "On the Dangers of Stochastic Parrots: Can Language Models Be Too Big? 🦜". The paper examined risks of very large language models, including their environmental footprint, financial costs, the inscrutability of large models, the potential for LLMs to display prejudice against certain groups, the inability of LLMs to understand the language they process, and the use of LLMs to spread disinformation. In December 2020, her employment with Google ended after Google management asked her to either withdraw the paper before publication, or remove the names of all the Google employees from