<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Society on kenji.blog</title><link>http://kenji.blog/en/categories/society/</link><description>Recent content in Society on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 12 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/en/categories/society/index.xml" rel="self" type="application/rss+xml"/><item><title>Can Technology Bridge the Social Divide? (A Proposal from an Engineer)</title><link>http://kenji.blog/en/p/technology-and-social-divide/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/technology-and-social-divide/</guid><description>&lt;img src="http://kenji.blog/p/technology-and-social-divide/img/eyecatch.jpg" alt="Featured image of post Can Technology Bridge the Social Divide? (A Proposal from an Engineer)" />&lt;h1 id="introduction-on-the-occasion-of-my-memorable-100th-post">Introduction: On the Occasion of My Memorable 100th Post
&lt;/h1>&lt;p>It has been several years since I started this blog, during which I have repeatedly shared technical explanations, daily development memos, and occasionally reflections on the relationship between technology and society. And now, this article marks the memorable &amp;ldquo;100th&amp;rdquo; post. I would like to express my deepest gratitude to all the readers who have continued to read up to this point.&lt;/p>
&lt;p>On this milestone of the 100th post, there is a theme I desperately wanted to write down. That is the extremely significant and fundamental question in modern society: &amp;ldquo;Can technology bridge the social divide?&amp;rdquo;&lt;/p>
&lt;p>The early internet (Web 1.0) was spoken of as a utopia of &amp;ldquo;democratization of knowledge,&amp;rdquo; where anyone could freely broadcast and access information. The subsequent era of social media (Web 2.0) was supposed to connect people around the world and realize a &amp;ldquo;flat world.&amp;rdquo; However, as of 2026, what is the reality we face? Political polarization, the spread of conspiracy theories, the proliferation of fake news, and the formation of &amp;ldquo;echo chambers&amp;rdquo; and &amp;ldquo;filter bubbles&amp;rdquo; that reject mutual understanding. Rather than connecting people, technology seems to have become a powerful engine accelerating Social Divide.&lt;/p>
&lt;p>We engineers are not just entities who write code and build systems. Behind the architectures we design, the algorithms we select, and the objective functions we optimize, lie the &amp;ldquo;rules&amp;rdquo; that govern how society should be. In this article, from the perspective of an engineer, I would like to deeply explore and discuss how the current social divide is technically generated using mathematics and network theory, and simultaneously, the concrete technical approaches (bridging algorithms, decentralized SNS protocols) to overcome it.&lt;/p>
&lt;hr>
&lt;h1 id="chapter-1-the-mathematical-structure-of-echo-chambers-through-the-lens-of-network-theory">Chapter 1: The Mathematical Structure of &amp;ldquo;Echo Chambers&amp;rdquo; through the Lens of Network Theory
&lt;/h1>&lt;p>When discussing the social divide, the structural analysis of communities using &amp;ldquo;Network Theory (Graph Theory)&amp;rdquo; is an unavoidable starting point. Human relationships on social media can be modeled as a giant graph where users are &amp;ldquo;nodes (vertices)&amp;rdquo; and follows or interactions between users are &amp;ldquo;edges.&amp;rdquo;&lt;/p>
&lt;p>One of the most important metrics characterizing division is the &amp;ldquo;Clustering Coefficient.&amp;rdquo; The clustering coefficient $C_i$ of a certain user $i$ represents the probability that the friends of user $i$ are also friends with each other, and is defined by the following formula:&lt;/p>
$$ C_i = \frac{2e_i}{k_i(k_i - 1)} $$&lt;p>Here, $k_i$ is the degree (number of friends) of user $i$, and $e_i$ is the actual number of edges existing among those $k_i$ friends. On social media, the phenomenon where local networks (dense subgraphs) with abnormally high clustering coefficients are formed becomes the foundation of so-called &amp;ldquo;echo chambers.&amp;rdquo;&lt;/p>
&lt;p>Behind the formation of echo chambers works the principle of &amp;ldquo;Homophily&amp;rdquo; in sociology. As the saying &amp;ldquo;birds of a feather flock together&amp;rdquo; goes, humans have a tendency to easily connect with others who have similar attributes or ideologies. Expressing this as a probabilistic model, the probability $P(u, v)$ that an edge is formed between user $u$ and user $v$ can be assumed to be inversely proportional to their ideological distance $d(u,v)$.&lt;/p>
$$ P(u, v) \propto e^{-\beta \cdot d(u,v)} $$&lt;p>The parameter $\beta > 0$ is a constant indicating the strength of homophily. When a platform&amp;rsquo;s recommendation algorithm continuously presents &amp;ldquo;content and users that the user likes (= similar to themselves),&amp;rdquo; the value of this $\beta$ is artificially pushed up. As a result, edges (Weak Ties) between groups with different ideologies drastically decrease, and the entire network splits into multiple mutually isolated clusters.&lt;/p>
&lt;p>The following Mermaid diagram visualizes the concept of a divided network and the bridging that connects it.&lt;/p>
&lt;pre class="mermaid">
graph TD
subgraph &amp;#34;Cluster A (Conservative Echo Chamber)&amp;#34;
A1[&amp;#34;User A1&amp;#34;] --- A2[&amp;#34;User A2&amp;#34;]
A2[&amp;#34;User A2&amp;#34;] --- A3[&amp;#34;User A3&amp;#34;]
A3[&amp;#34;User A3&amp;#34;] --- A4[&amp;#34;User A4&amp;#34;]
A4[&amp;#34;User A4&amp;#34;] --- A1[&amp;#34;User A1&amp;#34;]
A1[&amp;#34;User A1&amp;#34;] --- A3[&amp;#34;User A3&amp;#34;]
end
subgraph &amp;#34;Cluster B (Liberal Echo Chamber)&amp;#34;
B1[&amp;#34;User B1&amp;#34;] --- B2[&amp;#34;User B2&amp;#34;]
B2[&amp;#34;User B2&amp;#34;] --- B3[&amp;#34;User B3&amp;#34;]
B3[&amp;#34;User B3&amp;#34;] --- B4[&amp;#34;User B4&amp;#34;]
B4[&amp;#34;User B4&amp;#34;] --- B1[&amp;#34;User B1&amp;#34;]
B2[&amp;#34;User B2&amp;#34;] --- B4[&amp;#34;User B4&amp;#34;]
end
A2[&amp;#34;User A2 (Bridge Node)&amp;#34;] -. &amp;#34;Cross-cutting Edge (Bridging)&amp;#34; .- B2[&amp;#34;User B2 (Bridge Node)&amp;#34;]
classDef cluster fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef node fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
classDef bridge fill:#ffecb3,stroke:#ff6f00,stroke-width:2px,stroke-dasharray: 5 5;
class A1,A3,A4,B1,B3,B4 node;
class A2,B2 bridge;
&lt;/pre>
&lt;p>In this way, as long as the algorithm continues to adopt the objective function $J(\theta) = \sum \log P(\text{engage} | \text{user}, \text{content})$ that only optimizes for engagement (click-through rate, dwell time), the system will fall into a local optimum (strengthening of echo chambers) and move further away from the global optimum (formation of a healthy public square).&lt;/p>
&lt;hr>
&lt;h1 id="chapter-2-acceleration-of-polarization-by-algorithms-and-the-information-diffusion-model">Chapter 2: Acceleration of Polarization by Algorithms and the Information Diffusion Model
&lt;/h1>&lt;p>To think about how information spreads within an echo chamber, let&amp;rsquo;s apply the &amp;ldquo;SIR model,&amp;rdquo; a mathematical model for infectious diseases, to information diffusion.&lt;/p>
&lt;ul>
&lt;li>$S$ (Susceptible) : Users who have not yet been exposed to the information&lt;/li>
&lt;li>$I$ (Infected) : Users who believe the information and are spreading it&lt;/li>
&lt;li>$R$ (Recovered/Removed) : Users who have lost interest in the information or realized it&amp;rsquo;s fake and stopped spreading it&lt;/li>
&lt;/ul>
&lt;p>The differential equations for information propagation are expressed as follows:&lt;/p>
$$ \frac{dS}{dt} = -\alpha S I $$$$ \frac{dI}{dt} = \alpha S I - \gamma I $$$$ \frac{dR}{dt} = \gamma I $$&lt;p>Here, $\alpha$ is the &amp;ldquo;infection rate (ease of information spread),&amp;rdquo; and $\gamma$ is the &amp;ldquo;recovery rate (information saturation/forgetting).&amp;rdquo;
What&amp;rsquo;s interesting is that empirical studies show polarizing content that incites anger or fear has a significantly higher $\alpha$ compared to general information. Furthermore, since there are fewer opportunities to encounter contradictory information within an echo chamber, $\gamma$ becomes extremely low. In other words, when an algorithm tries to maximize engagement, it inevitably learns to preferentially distribute content with high $\alpha$ and low $\gamma$—namely, &amp;ldquo;extreme views and fake news.&amp;rdquo; This is the mechanism by which AI unintentionally accelerates social division.&lt;/p>
&lt;hr>
&lt;h1 id="chapter-3-technical-solution-1-bridging-algorithms-and-community-notes">Chapter 3: Technical Solution (1) Bridging Algorithms and Community Notes
&lt;/h1>&lt;p>So, how should we confront this structural flaw? The first approach is the introduction of a &amp;ldquo;Bridging Algorithm.&amp;rdquo;&lt;/p>
&lt;p>If engagement-based recommendation algorithms reward &amp;ldquo;homogeneity,&amp;rdquo; bridging algorithms reward &amp;ldquo;bridging heterogeneity.&amp;rdquo; A prime successful example of this is the &amp;ldquo;Community Notes&amp;rdquo; algorithm introduced on X (formerly Twitter).&lt;/p>
&lt;p>Community Notes is not a simple majority vote. In a majority vote, the opinion of the echo chamber with the most people would always win. The revolutionary aspect of Community Notes is that it highly evaluates &amp;ldquo;notes that people who usually disagree (belonging to different clusters) happen to uniformly rate as &amp;lsquo;helpful&amp;rsquo;.&amp;rdquo;&lt;/p>
&lt;p>To realize this, a machine learning technique called Matrix Factorization is used. The predicted score $\hat{r}_{u,n}$ of the rating (helpful or not) that user $u$ gives to note $n$ is modeled as follows:&lt;/p>
$$ \hat{r}_{u,n} = \mu + i_u + i_n + \mathbf{f}_u \cdot \mathbf{f}_n $$&lt;ul>
&lt;li>$\mu$ : Overall baseline (average rating tendency)&lt;/li>
&lt;li>$i_u$ : Rating bias of user $u$ (e.g., a person who always gives high ratings)&lt;/li>
&lt;li>$i_n$ : General quality of note $n$ (whether it&amp;rsquo;s easy for anyone to understand)&lt;/li>
&lt;li>$\mathbf{f}_u$ : Latent feature vector of user $u$ (e.g., ideological stance)&lt;/li>
&lt;li>$\mathbf{f}_n$ : Latent feature vector of note $n$&lt;/li>
&lt;/ul>
&lt;p>The algorithm learns each parameter to minimize the error between the actual rating data and the predicted scores.
What is crucial here is that the final decision to display a note is not based on a simple average rating, but on &amp;ldquo;the parameter $i_n$ indicating the general quality of the note.&amp;rdquo;&lt;/p>
&lt;p>If a certain note receives a massive number of high ratings from a specific biased group (e.g., only right-wing or only left-wing), those high ratings are absorbed by the latent vector term $\mathbf{f}_u \cdot \mathbf{f}_n$, and $i_n$ does not become high. However, if it receives high ratings from both the right ($\mathbf{f}_u > 0$) and the left ($\mathbf{f}_u &lt; 0$), it can no longer be explained solely by the dot product of the latent vectors, and as a result, the algorithm learns that &amp;ldquo;this note itself is universally excellent ($i_n$ is high).&amp;rdquo;&lt;/p>
&lt;p>Through this mathematical approach, it becomes possible to algorithmically discover and evaluate &amp;ldquo;consensus formation across echo chambers.&amp;rdquo; This is a highly powerful technical breakthrough for bridging social divisions.&lt;/p>
&lt;hr>
&lt;h1 id="chapter-4-technical-solution-2-decentralized-sns-protocols-at-protocol--activitypub">Chapter 4: Technical Solution (2) Decentralized SNS Protocols (AT Protocol / ActivityPub)
&lt;/h1>&lt;p>While bridging algorithms are powerful, the structural issue remains that a single giant corporation (centralized platform) monopolizes the algorithm. The algorithm can be changed at any time by a single management policy of the platform.&lt;/p>
&lt;p>The second approach to this is a paradigm shift at the architecture level via &amp;ldquo;Decentralized Social Protocols.&amp;rdquo; Currently, ActivityPub (adopted by Mastodon, etc.) and AT Protocol (adopted by Bluesky) are attracting significant attention.&lt;/p>
&lt;p>AT Protocol (Authenticated Transfer Protocol), in particular, has an extremely beautiful design philosophy of &amp;ldquo;separating data and algorithms.&amp;rdquo;&lt;/p>
&lt;pre class="mermaid">
graph TD
subgraph &amp;#34;User Control Layer&amp;#34;
Client[&amp;#34;Client App (Bluesky etc.)&amp;#34;]
end
subgraph &amp;#34;Data Layer (Federated)&amp;#34;
PDS1[&amp;#34;PDS (Personal Data Server) A&amp;#34;]
PDS2[&amp;#34;PDS (Personal Data Server) B&amp;#34;]
end
subgraph &amp;#34;Indexing &amp;amp; App Layer&amp;#34;
Relay[&amp;#34;Relay (Big Graph Server)&amp;#34;]
AppView[&amp;#34;AppView&amp;#34;]
end
subgraph &amp;#34;Algorithmic Layer (Composable)&amp;#34;
FeedGen1[&amp;#34;Feed Generator (Chronological)&amp;#34;]
FeedGen2[&amp;#34;Feed Generator (Bridging Algorithm)&amp;#34;]
Labeler[&amp;#34;Moderation Labeler (Fact Checkers)&amp;#34;]
end
Client --&amp;gt;|&amp;#34;Reads/Writes&amp;#34;| PDS1
Client --&amp;gt;|&amp;#34;Views&amp;#34;| AppView
PDS1 --&amp;gt;|&amp;#34;Syncs via WebSocket&amp;#34;| Relay
PDS2 --&amp;gt;|&amp;#34;Syncs via WebSocket&amp;#34;| Relay
Relay --&amp;gt;|&amp;#34;Indexes&amp;#34;| AppView
AppView -.-&amp;gt;|&amp;#34;Requests Feed&amp;#34;| FeedGen1
AppView -.-&amp;gt;|&amp;#34;Requests Feed&amp;#34;| FeedGen2
AppView -.-&amp;gt;|&amp;#34;Gets Labels&amp;#34;| Labeler
&lt;/pre>
&lt;p>The greatest achievement of the AT Protocol is that it has decoupled &amp;ldquo;feed generation (algorithms)&amp;rdquo; and &amp;ldquo;moderation (labeling)&amp;rdquo; from the main platform, making them freely selectable and composable by the users themselves (Custom Feeds / Stackable Moderation).&lt;/p>
&lt;p>Until now, we could choose &amp;ldquo;which SNS to use,&amp;rdquo; but we could not choose &amp;ldquo;which algorithm will bathe us in information.&amp;rdquo; In the world of AT Protocol, one person can choose a &amp;ldquo;chronological&amp;rdquo; feed, another can install an &amp;ldquo;academic feed that provides counterarguments to their opinions,&amp;rdquo; and yet another can subscribe to &amp;ldquo;moderation labels from a third-party organization that hides inappropriate words.&amp;rdquo;&lt;/p>
&lt;p>Backed by cryptographic technology (DID: Decentralized Identifiers) and data structures (Merkle Search Trees: MST), this protocol restores &amp;ldquo;informational self-determination&amp;rdquo; to users. As algorithms are no longer black boxes but compete and are selected in an open market, it holds the potential to transform the incentive structure from engagement-supremacy algorithms to ones that prioritize the mental health of users and the soundness of society.&lt;/p>
&lt;hr>
&lt;h1 id="chapter-5-the-philosophy-of-open-source-and-the-social-responsibility-of-engineers">Chapter 5: The Philosophy of Open Source and the Social Responsibility of Engineers
&lt;/h1>&lt;p>Thus far, I have described the analysis using network theory and the concrete technologies to overcome it (Matrix Factorization in Community Notes, decentralized architecture of AT Protocol). However, ultimately, what bridges social divisions is not mere code or mathematical formulas. It is the &amp;ldquo;human will and philosophy&amp;rdquo; that creates them.&lt;/p>
&lt;p>In the world of software engineering, there is a great culture called &amp;ldquo;Open Source.&amp;rdquo; Starting with Linux, most of the foundational technologies that build the internet have been created by strangers around the world cooperating, debating, and merging code across ideologies and borders. The open-source community possesses a mechanism not to eliminate conflicts, but to elevate them into constructive consensus building through &amp;ldquo;pull requests&amp;rdquo; and &amp;ldquo;code reviews.&amp;rdquo;&lt;/p>
&lt;p>I believe that this open-source philosophy itself will serve as a hint to repair our divided modern society. Making systems transparent, entrusting the choice of algorithms to users, and designing a decentralized public space (Public Square) where diverse values can coexist. That is a critically important social responsibility imposed on modern engineers.&lt;/p>
&lt;p>Code is law, and architecture is politics. A single line of code we write, a single API endpoint we define, or a database schema we design shapes the cognition of millions or hundreds of millions of users; it can accelerate social division, or it can build bridges that encourage dialogue.&lt;/p>
&lt;hr>
&lt;h1 id="conclusion-finishing-the-100th-article">Conclusion: Finishing the 100th Article
&lt;/h1>&lt;p>&amp;ldquo;Can technology bridge the social divide?&amp;rdquo;&lt;/p>
&lt;p>My answer to this question is: &amp;ldquo;Technology alone cannot bridge it, but properly designed technology can become a &amp;lsquo;scaffolding&amp;rsquo; for humans to overcome the divide.&amp;rdquo;&lt;/p>
&lt;p>It is impossible to completely erase fundamental human biases (homophily and confirmation bias). However, it is possible to stop the rampage of algorithms that solely pursue engagement, introduce mathematical models like Community Notes that evaluate &amp;ldquo;bridging,&amp;rdquo; and return choices to users through autonomous decentralized architectures like the AT Protocol.&lt;/p>
&lt;p>This blog marks its 100th post with this entry. In previous articles, I have focused on the so-called &amp;ldquo;How,&amp;rdquo; such as language specifications and how to use frameworks. However, in the coming era where AI automatically generates code and all technologies become commoditized, what is most important for us engineers are the ethical and philosophical questions of &amp;ldquo;What (what to make)&amp;rdquo; and &amp;ldquo;Why (why make it).&amp;rdquo;&lt;/p>
&lt;p>Technology is not magic. It is a mirror of humanity. If society is divided, it is because the systems we built are reflecting and amplifying that division. That is precisely why I believe that by rewriting the systems, we can slightly, but surely, change the state of society for the better.&lt;/p>
&lt;p>From the 101st post onward, as an engineer, I would like to continue standing at the intersection of code and society, deepening my thoughts. Thank you very much for reading this long piece to the end. I hope that the networks of the future will not be walls that divide us, but bridges for us to understand each other.&lt;/p>
&lt;p>(End)&lt;/p></description></item><item><title>Deepfake and Information Literacy: How to Technically Detect Fake News</title><link>http://kenji.blog/en/p/deepfake-info-literacy/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/deepfake-info-literacy/</guid><description>&lt;img src="http://kenji.blog/p/deepfake-info-literacy/img/eyecatch.jpg" alt="Featured image of post Deepfake and Information Literacy: How to Technically Detect Fake News" />&lt;h1 id="introduction-the-era-where-the-boundary-between-reality-and-fiction-melts">Introduction: The Era Where the Boundary Between Reality and Fiction Melts
&lt;/h1>&lt;p>In the 2020s, the evolution of Generative AI has been progressing at an unprecedented speed. It is now possible to generate content—text, audio, images, and even videos—that is indistinguishable from what humans create, in just a few seconds. While this technological leap brings tremendous benefits to creative fields, it has also created a serious social threat: the flood of sophisticated forged content known as &amp;ldquo;Deepfakes.&amp;rdquo;&lt;/p>
&lt;p>Deepfakes threaten society in various forms, such as fake speeches by politicians, scams impersonating corporate CEOs (an evolution of BEC scams), and pornography that defames celebrities. Especially during election periods, the spread of fake news via deepfakes has escalated to a point where it shakes the very foundation of democracy.&lt;/p>
&lt;p>In such an era, what is required of us is an update to our &amp;ldquo;information literacy.&amp;rdquo; The common sense of &amp;ldquo;believing what you see with your own eyes&amp;rdquo; is no longer valid. In this article, starting from the technical background of how deepfakes are generated, we will explain at a very deep level—incorporating mathematical formulas and code—the cutting-edge digital forensic techniques to &amp;ldquo;technically&amp;rdquo; detect them, and the frameworks (such as C2PA) for society as a whole to counter fake information.&lt;/p>
&lt;hr>
&lt;h1 id="1-the-mechanisms-of-generative-ai-supporting-deepfakes">1. The Mechanisms of Generative AI Supporting Deepfakes
&lt;/h1>&lt;p>To understand deepfakes, you must first know the mechanisms of the generative AI that forms their foundation. Currently, the two representative architectures used for generating high-definition images and videos are &amp;ldquo;GAN (Generative Adversarial Networks)&amp;rdquo; and &amp;ldquo;Diffusion Models.&amp;rdquo;&lt;/p>
&lt;h2 id="11-generative-adversarial-networks-gan">1.1 Generative Adversarial Networks (GAN)
&lt;/h2>&lt;p>Proposed by Ian Goodfellow and others in 2014, GANs ignited the deepfake technology trend. In a GAN, two neural networks take on roles like a &amp;ldquo;forger&amp;rdquo; and a &amp;ldquo;police officer,&amp;rdquo; and by competing with each other (adversarial training), they generate extremely realistic data.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Generator ($G$)&lt;/strong>: Takes random noise (latent variable $z$) as input and generates data (such as images) that looks exactly like the real thing.&lt;/li>
&lt;li>&lt;strong>Discriminator ($D$)&lt;/strong>: Determines whether the inputted data is &amp;ldquo;Real&amp;rdquo; coming from an actual dataset or &amp;ldquo;Fake&amp;rdquo; created by the generator.&lt;/li>
&lt;/ul>
&lt;p>These two networks proceed with training to optimize a loss function formulated as the following Minimax game:&lt;/p>
$$
\min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]
$$&lt;p>Here, $x$ is real data, and $z$ is a latent variable (noise). The discriminator $D$ tries to maximize this formula (accurately distinguishing between real and fake), and the generator $G$ tries to minimize it (fooling the discriminator). When this training reaches an equilibrium state (Nash equilibrium), the generator becomes able to generate data indistinguishable from the real thing.&lt;/p>
&lt;pre class="mermaid">
flowchart LR
Z[&amp;#34;Latent Variable (Latent Vector Z)&amp;#34;] --&amp;gt; G[&amp;#34;Generator&amp;#34;]
G --&amp;gt; F[&amp;#34;Generated Image (Fake Image)&amp;#34;]
R[&amp;#34;Actual Image (Real Image)&amp;#34;] --&amp;gt; D[&amp;#34;Discriminator&amp;#34;]
F --&amp;gt; D
D --&amp;gt; O[&amp;#34;Truth/False Judgment (Real/Fake)&amp;#34;]
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| G
O -.-&amp;gt;|&amp;#34;Loss Feedback&amp;#34;| D
&lt;/pre>
&lt;h2 id="12-diffusion-models">1.2 Diffusion Models
&lt;/h2>&lt;p>In recent years, &amp;ldquo;Diffusion Models&amp;rdquo; have emerged as the foundational technology for Midjourney and Stable Diffusion, boasting image quality and stability that surpass GANs. A diffusion model consists of a &amp;ldquo;forward diffusion process,&amp;rdquo; which gradually adds noise to data, and a &amp;ldquo;reverse diffusion process,&amp;rdquo; which restores the original data from noise.&lt;/p>
&lt;p>In the &lt;strong>Forward Process&lt;/strong>, Gaussian noise is added step by step over time $t$ to a clean image $x_0$. This process is expressed as a Markov chain with the following formula:&lt;/p>
$$
q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I})
$$&lt;p>Here, $\beta_t$ is a schedule parameter that controls the variance of the noise. After a sufficient number of steps $T$, $x_T$ becomes complete random noise.&lt;/p>
&lt;p>In the &lt;strong>Reverse Process&lt;/strong>, a neural network (usually a U-Net architecture) learns to predict the noise from the noisy image $x_t$ and restore the previous step $x_{t-1}$. By combining this process with conditioning (such as text prompts), it becomes possible to generate any image from zero (noise).&lt;/p>
&lt;hr>
&lt;h1 id="2-digital-forensics-techniques-to-search-for-traces-of-generated-artifacts">2. Digital Forensics: Techniques to Search for Traces of Generated Artifacts
&lt;/h1>&lt;p>No matter how advanced generative models become, &amp;ldquo;mathematical and statistical traces (artifacts)&amp;rdquo; invisible to humans always remain in AI-generated data. Detection technologies (deepfake detectors) capture these subtle traces through various approaches.&lt;/p>
&lt;h2 id="21-frequency-domain-analysis-and-dct-discrete-cosine-transform">2.1 Frequency Domain Analysis and DCT (Discrete Cosine Transform)
&lt;/h2>&lt;p>Human eyes are sensitive to spatial changes (spatial domain) in an image&amp;rsquo;s color and brightness, but insensitive to frequency changes (frequency domain). Images generated by GANs or diffusion models, even if they look perfect at first glance, produce peculiar frequency patterns (such as checkerboard artifacts) during the upsampling process (enlargement from low to high resolution).&lt;/p>
&lt;p>To detect this, the &lt;strong>Discrete Cosine Transform (DCT)&lt;/strong> is often used. DCT represents an image as a sum of cosine waves of different frequencies. The formula for the 2D DCT is as follows:&lt;/p>
$$
X_{k_1, k_2} = \sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} x_{n_1, n_2} \cos\left[\frac{\pi}{N_1}\left(n_1 + \frac{1}{2}\right)k_1\right] \cos\left[\frac{\pi}{N_2}\left(n_2 + \frac{1}{2}\right)k_2\right]
$$&lt;p>Generated images tend to have an abnormal energy distribution in the &lt;strong>high-frequency components (fine noise and abrupt edge changes)&lt;/strong> compared to natural images. The following Python code is a simple example of extracting the energy of high-frequency components from an image using DCT.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">scipy.fftpack&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">extract_high_frequency_features&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Load image and convert to grayscale&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">img&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">imread&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">image_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">IMREAD_GRAYSCALE&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">img&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="kc">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">raise&lt;/span> &lt;span class="ne">ValueError&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Image not found&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Apply 2D Discrete Cosine Transform (DCT)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># First apply 1D DCT to rows, then 1D DCT to columns&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">scipy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fftpack&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dct&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">T&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">norm&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ortho&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Extract high-frequency components (mask the top-left low-frequency components to zero)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ones&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cols&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Mask the low-frequency region (10% of the whole)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mask&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rows&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">cols&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high_freq_features&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dct_result&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">mask&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Calculate the amount of energy in the high-frequency region&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">energy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">high_freq_features&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">energy&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Comparing natural images with generated images often reveals a statistically significant difference in the energy value&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>This unnaturalness in the frequency domain arises because while AI can learn &amp;ldquo;local consistency at the pixel level,&amp;rdquo; it struggles to perfectly mimic the &amp;ldquo;global frequency characteristics of the entire image.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h1 id="3-detection-of-biological-signals-confirming-the-beat-of-life-via-rppg">3. Detection of Biological Signals: Confirming the &amp;ldquo;Beat of Life&amp;rdquo; via rPPG
&lt;/h1>&lt;p>In addition to detection technologies for images (still images), a groundbreaking approach to deepfake detection in videos is the &lt;strong>extraction of biological signals&lt;/strong>.&lt;/p>
&lt;p>As long as a human is alive, blood circulates through the body in sync with the heartbeat. Because hemoglobin in the blood absorbs specific wavelengths (especially green light, around 530nm) well, the color of the facial skin changes minutely (at a level invisible to the human eye) in time with the heartbeat. The technology that uses this principle to estimate the heart rate contactlessly from standard RGB camera video is called &lt;strong>rPPG (remote Photoplethysmography)&lt;/strong>.&lt;/p>
&lt;p>The basic rPPG model based on light absorption and reflection is expressed by the Beer-Lambert law as follows:&lt;/p>
$$
I(t) = I_0(t) e^{-\left( \mu_{dc} + \mu_{ac}(t) \right) d}
$$&lt;p>Here, $I(t)$ is the light intensity observed by the camera, $I_0(t)$ is the light source intensity, $\mu_{dc}$ is the static light absorption coefficient by tissue, $\mu_{ac}(t)$ is the dynamic light absorption coefficient due to blood flow fluctuation (heartbeat), and $d$ is the path length of the light.&lt;/p>
&lt;p>Deepfake videos (such as FaceSwap, which swaps faces, or Lip-sync, which matches lip movements to audio) pursue visual realism on a frame-by-frame basis, but &lt;strong>they cannot reproduce the minute blood flow changes (heartbeat signals) along the time axis.&lt;/strong> Therefore, when attempting to extract an rPPG signal from a deepfake video, one obtains a noisy, unnatural signal that differs from the regular rhythm of a natural human heart rate (typically in the range of 60-100 bpm).&lt;/p>
&lt;pre class="mermaid">
flowchart LR
V[&amp;#34;Input Video (Video Stream)&amp;#34;] --&amp;gt; F[&amp;#34;Face Detection &amp;amp; Tracking (Face Tracking)&amp;#34;]
F --&amp;gt; R[&amp;#34;Region of Interest Extraction (ROI Extraction)&amp;#34;]
R --&amp;gt; S[&amp;#34;Spatial Pooling&amp;#34;]
S --&amp;gt; B[&amp;#34;Bandpass Filter&amp;#34;]
B --&amp;gt; H[&amp;#34;Heartbeat Signal Extraction (Heartbeat Signal)&amp;#34;]
H --&amp;gt; A[&amp;#34;Truth/False Classification &amp;amp; Anomaly Detection (Fake/Real Classification)&amp;#34;]
&lt;/pre>
&lt;p>Below is a conceptual implementation example of a pipeline for extracting rPPG signals from video using Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cv2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">scipy&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">extract_rppg_signal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cv2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VideoCapture&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">video_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">isOpened&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ret&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">ret&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 1. Face detection and extraction of ROI (Region of Interest: e.g., forehead or cheeks)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># roi = detect_face_and_extract_roi(frame)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Here, for simplicity, the central part of the entire frame is used as the ROI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">h&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">w&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">roi&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frame&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.3&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.4&lt;/span>&lt;span class="p">):&lt;/span>&lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mf">0.6&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 2. Extract Green channel from RGB space&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Because hemoglobin in the blood absorbs green light the most&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g_channel&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">roi&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="p">:,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 3. Spatial pooling (calculating the mean value)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mean_g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mean&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">g_channel&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">green_signals&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">mean_g&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cap&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">release&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="kc">None&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 4. Noise removal with a bandpass filter&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Extract the human heart rate frequency band (e.g., 0.7Hz - 2.5Hz = 42 - 150 bpm)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">30.0&lt;/span> &lt;span class="c1"># Assumed frame rate&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nyquist&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.5&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">fps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">0.7&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mf">2.5&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">nyquist&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">butter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">low&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">btype&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;bandpass&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filtered_signal&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">signal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">filtfilt&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">green_signals&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">filtered_signal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># By analyzing the frequency spectrum of the extracted filtered_signal,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># if no clear peak (heartbeat) exists, it is determined that the probability of it being a deepfake is high.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h1 id="4-the-never-ending-cat-and-mouse-game-adversarial-training-and-evasion-techniques">4. The Never-ending &amp;ldquo;Cat-and-Mouse Game&amp;rdquo;: Adversarial Training and Evasion Techniques
&lt;/h1>&lt;p>As introduced so far, advanced forensic techniques such as frequency analysis and biological signals (rPPG) do exist. However, in the world of AI, there is no &amp;ldquo;absolute barrier.&amp;rdquo; As soon as a detection technology is published in a paper, attackers (deepfake creators) immediately improve their generative models to evade that detector.&lt;/p>
&lt;p>For example, suppose a detector identifies deepfakes by detecting &amp;ldquo;anomalies in the frequency domain.&amp;rdquo; Attackers will &lt;strong>incorporate this detector itself as the &amp;ldquo;Discriminator&amp;rdquo; of a new GAN&lt;/strong> and retrain the Generator. Then, the Generator evolves to output &amp;ldquo;images that are indistinguishable from natural images even in the frequency domain.&amp;rdquo;&lt;/p>
&lt;p>Furthermore, there are already reports of research (Anti-Forensics) attempting to fool rPPG-based detection systems by intentionally adding artificial &amp;ldquo;minute color fluctuations (fake heartbeat signals)&amp;rdquo; to videos in post-processing.&lt;/p>
&lt;p>Detection and generation are truly engaged in a never-ending cat-and-mouse game of &amp;ldquo;shield and spear.&amp;rdquo; For this reason, it is pointed out that the approach of judging authenticity by retrospectively analyzing only the output data (images and videos) (passive detection) will eventually reach its limit.&lt;/p>
&lt;hr>
&lt;h1 id="5-fundamental-countermeasures-provenance-proof-and-the-c2pa-framework">5. Fundamental Countermeasures: Provenance Proof and the C2PA Framework
&lt;/h1>&lt;p>As retrospective detection approaches its limits, an active defense approach that cryptographically guarantees the &amp;ldquo;Provenance&amp;rdquo; of data is rapidly being promoted worldwide. Constructing the global standard framework for this is the &lt;strong>C2PA (Coalition for Content Provenance and Authenticity)&lt;/strong>.&lt;/p>
&lt;p>C2PA is a consortium established with the participation of major companies such as Adobe, Microsoft, Intel, BBC, and Sony. It defines technical specifications to embed the provenance of digital content (who shot it, when, with which camera, and what edits were made) directly into the content itself in a tamper-evident manner.&lt;/p>
&lt;h2 id="51-how-c2pa-works">5.1 How C2PA Works
&lt;/h2>&lt;p>The core technologies of C2PA are digital signatures using Public Key Infrastructure (PKI) and content hash binding.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Manifest Generation (Manifest)&lt;/strong>: The moment a photo is taken with a camera, or when it is edited with software, a metadata called a &amp;ldquo;Manifest&amp;rdquo; is generated, which includes the operation history, device information, and creator information.&lt;/li>
&lt;li>&lt;strong>Cryptographic Signature (Digital Signature)&lt;/strong>: A digital signature is applied to the Manifest and the hash value of the image itself (a summary of the pixel data) using a hardware or software private key.&lt;/li>
&lt;li>&lt;strong>Embedding in the Asset&lt;/strong>: The signed Manifest (C2PA credential) is embedded in the header information of file formats like JPEG or MP4.&lt;/li>
&lt;/ol>
&lt;p>If an attacker attempts to tamper with a part of the image or attach fake metadata to an AI-generated image, the hash value of the image itself will change, causing the digital signature verification to fail and instantly revealing the tampering.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
C[&amp;#34;Creator / Camera&amp;#34;] --&amp;gt; M[&amp;#34;Manifest Generation&amp;#34;]
M --&amp;gt; S[&amp;#34;Signature and Binding (Cryptographic Signature)&amp;#34;]
S --&amp;gt; A[&amp;#34;Asset with C2PA Manifest&amp;#34;]
A --&amp;gt; P[&amp;#34;Platform (Social Media Platform)&amp;#34;]
P --&amp;gt; V[&amp;#34;Validation Process&amp;#34;]
V --&amp;gt; U[&amp;#34;Display on User Screen (Content Credentials UI)&amp;#34;]
&lt;/pre>
&lt;h2 id="52-visualization-with-the-content-credentials-icon">5.2 Visualization with the &amp;ldquo;Content Credentials&amp;rdquo; Icon
&lt;/h2>&lt;p>In systems compliant with the C2PA standard, when users view images on social media or news sites, an icon reading &amp;ldquo;CR (Content Credentials)&amp;rdquo; is displayed in the corner of the image. By clicking this, anyone can transparently check the history of the image, such as whether it was &amp;ldquo;generated by AI,&amp;rdquo; &amp;ldquo;shot with an actual camera,&amp;rdquo; or &amp;ldquo;color-corrected in Photoshop.&amp;rdquo;&lt;/p>
&lt;p>Currently, major AI vendors like OpenAI (DALL-E 3) and Google have started attaching C2PA metadata to generated images, and camera manufacturers like Leica and Sony are proceeding to implement C2PA signature functions at the hardware level. The paradigm of society is shifting from &amp;ldquo;detecting fakes&amp;rdquo; to &amp;ldquo;proving authenticity (Zero-Trust approach).&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h1 id="6-next-generation-information-literacy-what-we-can-do">6. Next-Generation Information Literacy: What We Can Do
&lt;/h1>&lt;p>Technical countermeasures (such as deepfake detectors or provenance proofs like C2PA) are merely infrastructure to protect society. Ultimately, it is our human brains that decide whether to consume and spread information.&lt;/p>
&lt;p>&amp;ldquo;Information literacy&amp;rdquo; in the AI era means adopting the following attitudes:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Avoid Reflexive Spreading (Stop and Think)&lt;/strong>
Especially when exposed to shocking footage or content that incites anger (information appealing to emotions), stop for a moment and halt your hands from reposting or sharing. The primary goal of deepfake creators is to hack human emotions and make the information spread.&lt;/li>
&lt;li>&lt;strong>Verify the Source of the Information (Verify the Source)&lt;/strong>
Is the information transmitted by a reliable news organization? Is it accompanied by a provenance proof (Content Credentials) like C2PA? It is crucial to develop the habit of cross-checking information sources.&lt;/li>
&lt;li>&lt;strong>Healthy Skepticism that &amp;ldquo;Everything Might be Fake&amp;rdquo; (Healthy Skepticism)&lt;/strong>
There is no need to become pessimistic, but the old common sense of &amp;ldquo;video = fact&amp;rdquo; must be discarded. We must consume information with the premise that audio, video, and text can all be easily forged in this era.&lt;/li>
&lt;/ol>
&lt;h1 id="conclusion">Conclusion
&lt;/h1>&lt;p>The evolution of AI technology has opened Pandora&amp;rsquo;s box. It is no longer possible to erase the technology itself that creates deepfakes.&lt;/p>
&lt;p>However, as explained in this article, engineers are confronting the threat of fake news with a variety of approaches, such as frequency analysis, biological signal detection, and provenance proof (C2PA) using cryptography. By combining these technical shields (defenses) with the social shield of &amp;ldquo;information literacy&amp;rdquo; that each of us possesses, we should be able to navigate the wave of fiction brought by AI and protect the value of truth.&lt;/p>
&lt;p>Precisely because we are in an era where the boundary between reality and fiction is melting, the human &amp;ldquo;will&amp;rdquo; to try and discern the truth has become more important than ever.&lt;/p></description></item><item><title>How SNS Algorithms Influence Our Thinking and Tech Selection</title><link>http://kenji.blog/en/p/sns-algorithm-tech-selection/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/sns-algorithm-tech-selection/</guid><description>&lt;img src="http://kenji.blog/p/sns-algorithm-tech-selection/img/eyecatch.jpg" alt="Featured image of post How SNS Algorithms Influence Our Thinking and Tech Selection" />&lt;h2 id="1-introduction-democratization-of-tech-information-and-the-rise-of-algorithms">1. Introduction: Democratization of Tech Information and the Rise of Algorithms
&lt;/h2>&lt;p>In modern software engineering, much of the technical information we consume daily passes through Social Networking Services (SNS) like X (formerly Twitter), Hacker News, Reddit, and LinkedIn, or news aggregators. There was once an era where we gathered information autonomously and chronologically through mailing lists, expert-run blogs, or RSS readers. However, with the explosive increase in frameworks and tools created every day, it has become common practice to entrust information curation to &amp;ldquo;Recommendation Algorithms&amp;rdquo; provided by platforms in order to optimize our limited cognitive resources (disposable time and attention).&lt;/p>
&lt;p>This paradigm shift has brought the immense benefit of efficiently discovering valuable technical articles and groundbreaking open-source projects. On the other hand, it has also caused a highly critical side effect. That is the fact that &lt;strong>&amp;ldquo;the technical trends and best practices we see are distorted not by pure technical superiority or objective evaluation, but by the algorithm&amp;rsquo;s &amp;rsquo;engagement optimization function&amp;rsquo;.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>In this article, we mathematically and structurally unravel how the advanced machine learning algorithms running behind the scenes of SNS shape our cognition and influence decision-making in tech selection. Furthermore, we deeply consider the dangers of &amp;ldquo;Hype Driven Development (HDD),&amp;rdquo; where one is swept away by the hype created by algorithms, and concrete approaches to break free from it and make objective, robust tech selections.&lt;/p>
&lt;hr>
&lt;h2 id="2-evolution-and-mechanism-of-recommendation-algorithms">2. Evolution and Mechanism of Recommendation Algorithms
&lt;/h2>&lt;p>When we open an SNS, the content displayed on our timeline (feed) is not random. There are machine learning models highly tuned to maximize user retention time and improve ad revenue. First, let&amp;rsquo;s look at the foundational technologies behind these.&lt;/p>
&lt;h3 id="21-collaborative-filtering-and-matrix-factorization">2.1 Collaborative Filtering and Matrix Factorization
&lt;/h3>&lt;p>&amp;ldquo;Collaborative Filtering&amp;rdquo; has served as a powerful baseline from the dawn of recommendation systems to the present. In particular, &amp;ldquo;Matrix Factorization,&amp;rdquo; which represents the interaction between users and items (posts or articles) as a matrix and maps them into a latent feature space, is widely used.&lt;/p>
&lt;p>Given an evaluation matrix $R \in \mathbb{R}^{M \times N}$ with $M$ users and $N$ items, matrix factorization approximates this large, sparse matrix as the product of a low-dimensional latent feature matrix $U \in \mathbb{R}^{M \times K}$ (user features) and $V \in \mathbb{R}^{N \times K}$ (item features) ($K \ll M, N$).&lt;/p>
$$
R \approx U \times V^T
$$&lt;p>The predicted score (probability of engagement) $\hat{r}_{ij}$ of item $j$ for a specific user $i$ is calculated as the inner product of their respective latent feature vectors.&lt;/p>
$$
\hat{r}_{ij} = \mathbf{u}_i \cdot \mathbf{v}_j
$$&lt;p>This model is trained to minimize the following loss function ($\lambda$ is a regularization term to prevent overfitting).&lt;/p>
$$
\mathcal{L} = \sum_{(i,j) \in \Omega} (r_{ij} - \mathbf{u}_i \cdot \mathbf{v}_j)^2 + \lambda (\|\mathbf{u}_i\|^2 + \|\mathbf{v}_j\|^2)
$$&lt;p>&lt;strong>Impact on Tech Selection:&lt;/strong>
This algorithm brings &amp;ldquo;Person A who is interested in Rust&amp;rdquo; and &amp;ldquo;Person B who is interested in Rust&amp;rdquo; closer together in the latent space. If Person A &amp;ldquo;likes&amp;rdquo; a post about an emerging Web framework, posts about that framework will appear on Person B&amp;rsquo;s timeline with a high probability. Because of this, a phenomenon occurs where specific technologies become locally popular within engineer groups that prefer certain tech stacks.&lt;/p>
&lt;h3 id="22-deep-learning-recommendation-model-dlrm">2.2 Deep Learning Recommendation Model (DLRM)
&lt;/h3>&lt;p>In recent years, deep learning-based architectures, represented by the Deep Learning Recommendation Model (DLRM), have become widespread, centered around companies like Meta (formerly Facebook). DLRM receives a wide variety of features as input, such as the user&amp;rsquo;s past behavior history and item metadata, and predicts the Click-Through Rate (CTR) and the like.&lt;/p>
&lt;p>The characteristic of DLRM lies in converting sparse categorical features (e.g., User ID, followed hashtags) into dense vectors through an &amp;ldquo;Embedding Table,&amp;rdquo; and combining them with continuous dense features (e.g., days since account creation, past average retention time).&lt;/p>
$$
\mathbf{e}_{\text{sparse}} = \text{EmbeddingLookup}(\mathbf{x}_{\text{sparse}})
$$$$
\mathbf{h}_{\text{dense}} = \text{BottomMLP}(\mathbf{x}_{\text{dense}})
$$&lt;p>After combining these through concatenation or interactions like inner products (Feature Interaction), they are input into a Top Multilayer Perceptron (Top MLP) to output the final probability of CTR, etc., using a sigmoid function $\sigma$.&lt;/p>
$$
\hat{y} = \sigma(\text{TopMLP}(\text{Interact}(\mathbf{e}_{\text{sparse}}, \mathbf{h}_{\text{dense}})))
$$&lt;p>&lt;strong>Impact on Tech Selection:&lt;/strong>
Giant models like DLRM capture even extremely subtle signals (for example, a slight increase in retention time for &amp;ldquo;posts with videos&amp;rdquo; or &amp;ldquo;posts containing specific buzzwords&amp;rdquo;) and reflect them in the prediction score. As a result, technical information that includes &amp;ldquo;radical titles (e.g., &amp;lsquo;React is dead&amp;rsquo;, &amp;lsquo;The End of Microservices&amp;rsquo;)&amp;rdquo; or &amp;ldquo;visually flashy demos&amp;rdquo; tends to be algorithmically favored.&lt;/p>
&lt;h3 id="23-reinforcement-learning-and-multi-armed-bandits">2.3 Reinforcement Learning and Multi-Armed Bandits
&lt;/h3>&lt;p>Recommendation systems must constantly explore the user&amp;rsquo;s latest preferences. Here is where the &amp;ldquo;Multi-Armed Bandit problem&amp;rdquo; comes in. It optimizes the trade-off between &amp;ldquo;Exploitation&amp;rdquo; (presenting reliable content based on existing preferences) and &amp;ldquo;Exploration&amp;rdquo; (discovering new trends).&lt;/p>
&lt;p>In UCB (Upper Confidence Bound), a representative algorithm, the score for selecting arm (content group) $a$ at time $t$ is calculated as follows.&lt;/p>
$$
a_t = \arg\max_{a} \left( \hat{\mu}_a + c \sqrt{\frac{\ln t}{N_a(t)}} \right)
$$&lt;p>Here, $\hat{\mu}_a$ is the average reward (engagement rate) of arm $a$ so far, $N_a(t)$ is the number of times it has been selected, and $c$ is a parameter that adjusts the degree of exploration.&lt;/p>
&lt;p>&lt;strong>Impact on Tech Selection:&lt;/strong>
The algorithm temporarily gives an exploration bonus to posts about newly introduced frameworks or libraries (those with a low number of trials $N_a(t)$) and exposes them to a random group of users. In this initial &amp;ldquo;exploration phase,&amp;rdquo; if the reaction from influencers and others is good, $\hat{\mu}_a$ sharply rises, rapidly developing into a buzz (viral). This is the mechanism of &amp;ldquo;suddenly everyone starts talking about that technology.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="3-the-mathematics-of-echo-chambers-and-filter-bubbles">3. The Mathematics of Echo Chambers and Filter Bubbles
&lt;/h2>&lt;p>As algorithms become more optimized, users find themselves surrounded only by &amp;ldquo;information they find comfortable or information that reinforces their existing beliefs.&amp;rdquo; This is the &lt;strong>Echo Chamber&lt;/strong> phenomenon and the &lt;strong>Filter Bubble&lt;/strong>.&lt;/p>
&lt;p>In network theory, the tendency for similar individuals to connect is called &amp;ldquo;Homophily.&amp;rdquo; In a graph $G=(V, E)$, edges (follow relationships and information propagation) between nodes (users) are more likely to form the higher the similarity of attributes.&lt;/p>
&lt;p>SNS recommendation algorithms artificially accelerate this homophily. For example, suppose there is a community of engineers promoting &amp;ldquo;Serverless Architecture&amp;rdquo; and another supporting &amp;ldquo;On-Premises Bare Metal.&amp;rdquo; The algorithm learns to lower the weight of cross-cutting ties between different communities and strengthen edges within the same community (because opposing opinions often cause user churn and carry the risk of lowering engagement. Or conversely, it might trigger engagement through extreme anger, but the former tends to be more common in tech circles).&lt;/p>
&lt;p>As a result, a completely divided technological reality is created, where on your timeline it looks like &amp;ldquo;companies all over the world are migrating to serverless,&amp;rdquo; while on someone else&amp;rsquo;s timeline it looks like &amp;ldquo;Cloud Repatriation is a global trend.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="4-hype-driven-development-hdd-created-by-algorithms">4. Hype Driven Development (HDD) Created by Algorithms
&lt;/h2>&lt;p>The combination of echo chambers and powerful recommendation models triggers one of the biggest anti-patterns in the engineering industry: &lt;strong>Hype Driven Development (HDD)&lt;/strong>. HDD is the phenomenon of adopting new technologies simply because &amp;ldquo;they are trending on SNS&amp;rdquo; or &amp;ldquo;they are the latest trend,&amp;rdquo; without deeply considering the actual merits, trade-offs, or compatibility with one&amp;rsquo;s own business requirements.&lt;/p>
&lt;p>The Mermaid diagram below shows how SNS algorithms spin the feedback loop of HDD.&lt;/p>
&lt;pre class="mermaid">
graph TD
A[&amp;#34;Engineers post the &amp;#39;overwhelming benefits&amp;#39; of a new tech&amp;#34;] --&amp;gt; B[&amp;#34;Algorithm measures initial CTR and retention time (Exploration)&amp;#34;]
B --&amp;gt; C[&amp;#34;Judged as high engagement, exposure expands to similar users&amp;#39; TLs&amp;#34;]
C --&amp;gt; D[&amp;#34;Users stimulated by FOMO (Fear Of Missing Out) further spread it&amp;#34;]
D --&amp;gt; E[&amp;#34;Occurrence of Frequency Illusion: &amp;#39;It&amp;#39;s becoming the industry standard&amp;#39;&amp;#34;]
E --&amp;gt; F[&amp;#34;Introduced into real projects without sufficient verification (HDD)&amp;#34;]
F --&amp;gt; A
&lt;/pre>
&lt;p>What is terrifying about this loop is that the &lt;strong>&amp;ldquo;Baader-Meinhof phenomenon (Frequency Illusion)&amp;rdquo;&lt;/strong> is intentionally triggered by the algorithm. Once you see the name of a new state management library, the algorithm captures it as a signal and fills your feed with topics about that library from the next day. The human brain misidentifies this as a &amp;ldquo;global pandemic.&amp;rdquo;&lt;/p>
&lt;p>The chart below illustrates the difference in lifecycle between technologies overly hyped on SNS and &amp;ldquo;Boring Technology&amp;rdquo; that is plain and dull but robust.&lt;/p>
&lt;pre class="mermaid">
xychart-beta
title Technology Lifecycle and Evaluation Trends
x-axis [&amp;#34;Month 0&amp;#34;, &amp;#34;Month 6&amp;#34;, &amp;#34;Month 12&amp;#34;, &amp;#34;Month 18&amp;#34;, &amp;#34;Month 24&amp;#34;, &amp;#34;Month 30&amp;#34;, &amp;#34;Month 36&amp;#34;]
y-axis &amp;#34;Number of Mentions / Hype Level on SNS&amp;#34; 0 --&amp;gt; 100
line [10, 85, 95, 45, 20, 10, 5]
line [15, 20, 25, 35, 50, 65, 80]
&lt;/pre>
&lt;p>&lt;em>(Note: In the graph above, the line that sharply rises and falls indicates the &amp;ldquo;Hyped Technology,&amp;rdquo; while the line that slowly and steadily rises indicates &amp;ldquo;Boring Technology&amp;rdquo;)&lt;/em>&lt;/p>
&lt;p>Hyped technologies face realistic problems such as &amp;ldquo;lack of documentation,&amp;rdquo; &amp;ldquo;critical bugs in edge cases,&amp;rdquo; and &amp;ldquo;maintainer burnout&amp;rdquo; 6 to 12 months after introduction, and rapidly disappear from SNS. However, once technical debt is embedded into a system, removing it costs an enormous amount.&lt;/p>
&lt;hr>
&lt;h2 id="5-escaping-the-algorithm-strategies-in-tech-selection">5. &amp;ldquo;Escaping the Algorithm&amp;rdquo; Strategies in Tech Selection
&lt;/h2>&lt;p>So, how should we make objective and calm tech selections under the dominance of these algorithms? Here are some concrete strategies not to hack the algorithm, but to &amp;ldquo;step off&amp;rdquo; from it.&lt;/p>
&lt;h3 id="51-returning-to-primary-information-source-code-and-rfcs">5.1 Returning to Primary Information: Source Code and RFCs
&lt;/h3>&lt;p>The most reliable defense is to shift your information sources from SNS aggregations to &lt;strong>Primary Sources&lt;/strong>.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Read the Source Code:&lt;/strong> Instead of believing SNS posts saying &amp;ldquo;This library is blazingly fast,&amp;rdquo; actually open GitHub and check the core logic&amp;rsquo;s time complexity and memory allocation mechanisms.&lt;/li>
&lt;li>&lt;strong>Follow RFCs (Request for Comments):&lt;/strong> Many mature open-source projects (React, Rust, Python, etc.) adopt the RFC process when introducing new features. RFCs objectively and logically describe &amp;ldquo;Why this feature is necessary,&amp;rdquo; &amp;ldquo;What the design trade-offs are,&amp;rdquo; and &amp;ldquo;What the alternatives are,&amp;rdquo; without worrying about algorithm engagement. This is where true technical value lies.&lt;/li>
&lt;/ol>
&lt;h3 id="52-close-reading-of-academic-papers-and-whitepapers">5.2 Close Reading of Academic Papers and Whitepapers
&lt;/h3>&lt;p>When it comes to foundational tech selections like distributed systems, databases, or machine learning model architectures, you should directly read papers published in ACM, IEEE, or arXiv, or detailed whitepapers published by companies (e.g., Google&amp;rsquo;s Spanner paper, Amazon&amp;rsquo;s Dynamo paper), rather than a few lines of summary on SNS.&lt;/p>
&lt;p>SNS posts are optimized to &amp;ldquo;steal readers&amp;rsquo; attention,&amp;rdquo; whereas peer-reviewed papers are optimized for &amp;ldquo;factual accuracy and reproducibility.&amp;rdquo; The evaluation functions are entirely different.&lt;/p>
&lt;h3 id="53-building-an-in-house-decision-making-framework">5.3 Building an In-House Decision-Making Framework
&lt;/h3>&lt;p>To prevent HDD at the team or organizational level, a process is needed to eliminate personal intuition or reasons like &amp;ldquo;because I saw it on Twitter.&amp;rdquo; A prime example of this is the introduction of &lt;strong>ADR (Architecture Decision Records)&lt;/strong>.&lt;/p>
&lt;p>When introducing a new technology, you must always document the following items and undergo a review:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Context:&lt;/strong> Why is the new technology necessary? What are the current issues?&lt;/li>
&lt;li>&lt;strong>Decision:&lt;/strong> What will be adopted?&lt;/li>
&lt;li>&lt;strong>Consequences:&lt;/strong> What are the trade-offs? (What is gained at the expense of what?)&lt;/li>
&lt;/ul>
&lt;p>By enforcing this process, &amp;ldquo;Hype&amp;rdquo; can be transformed into &amp;ldquo;Engineering.&amp;rdquo;&lt;/p>
&lt;h3 id="54-the-philosophy-of-the-boring-technology-club">5.4 The Philosophy of the Boring Technology Club
&lt;/h3>&lt;p>There is a famous mantra in the tech community: &lt;strong>&amp;ldquo;Choose Boring Technology.&amp;rdquo;&lt;/strong> This is a teaching that Innovation Tokens (the limited resources an organization can spend on new, unknown technologies) should not be wasted on selecting infrastructure or frameworks that are not directly tied to the core value of the business.&lt;/p>
&lt;p>SNS algorithms prefer &amp;ldquo;novelty.&amp;rdquo; However, to build a robust system that can withstand real-world operations, what is needed is &amp;ldquo;boring&amp;rdquo; technology (like PostgreSQL, Redis, or standard REST APIs) that has over 10 years of operational track record and yields millions of Google search hits for disaster recovery procedures.&lt;/p>
&lt;hr>
&lt;h2 id="6-conclusion-how-we-should-face-technology">6. Conclusion: How We Should Face Technology
&lt;/h2>&lt;p>SNS recommendation algorithms are powerful tools that broaden our technical horizons and provide encounters with wonderful communities. However, as long as their internal structures (Matrix Factorization, DLRM, Multi-Armed Bandits) have &amp;ldquo;engagement maximization&amp;rdquo; as their supreme imperative, the information output is inevitably biased.&lt;/p>
&lt;p>We need to acquire the literacy to treat the information flowing into our timelines not as &amp;ldquo;facts&amp;rdquo; or &amp;ldquo;absolute trends,&amp;rdquo; but merely as a single &amp;ldquo;signal.&amp;rdquo;&lt;/p>
&lt;p>Stepping out of the echo chamber, reading source code with our own hands, following RFC discussions, deciphering the math in papers, and facing the true challenges of our business domains. That alone is the only path to practicing true software engineering without being swallowed by the waves of algorithms.&lt;/p></description></item><item><title>The Current State and Challenges of IT Education in Japan: After the Mandatory Programming Education</title><link>http://kenji.blog/en/p/japan-it-education-aftermath/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/japan-it-education-aftermath/</guid><description>&lt;img src="http://kenji.blog/p/japan-it-education-aftermath/img/eyecatch.jpg" alt="Featured image of post The Current State and Challenges of IT Education in Japan: After the Mandatory Programming Education" />&lt;h2 id="1-introduction-the-light-and-shadow-brought-by-mandatory-programming-education">1. Introduction: The Light and Shadow Brought by Mandatory Programming Education
&lt;/h2>&lt;p>With the mandatory implementation of programming education in elementary schools in 2020, its expansion in junior high school technology and home economics classes in 2021, and the mandatory introduction of the new subject &amp;ldquo;Information I&amp;rdquo; in high schools in 2022, IT and information education in Japan have experienced an unprecedented paradigm shift in recent years. At the root of this series of policies lies a very pressing national demand: the cultivation of logical thinking skills (programming thinking) necessary to survive in the Society 5.0 (Super Smart Society) era, and the resolution of the chronic shortage of highly skilled IT professionals in the industry.&lt;/p>
&lt;p>However, looking at the front lines of education, it has become apparent that there is a massive disconnect between the ideal envisioned by the government and reality. The most serious issue is the complete conflation of &amp;ldquo;learning programming as a tool&amp;rdquo; and &amp;ldquo;mastering the academic discipline of computer science.&amp;rdquo; Furthermore, structural challenges are piling up, including the technical limitations due to the hardware specs of the nationwide IT infrastructure, and the lack of professional skill sets among the teachers who are supposed to instruct the students.&lt;/p>
&lt;p>This article summarizes the &amp;ldquo;aftermath&amp;rdquo; of the mandatory programming education in Japan and explores in detail and technically the fundamental and structural problems facing IT education today. It examines these issues from the perspectives of computer science theory, hardware architecture constraints, and global industrial competitiveness. Spanning approximately 10,000 characters, this is not just an educational discourse, but an essay that considers the future of Japan from the viewpoint of software engineering.&lt;/p>
&lt;h2 id="2-the-trap-of-visual-programming-the-deep-and-steep-chasm-from-scratch-to-text-coding">2. The Trap of Visual Programming: The Deep and Steep Chasm from Scratch to Text Coding
&lt;/h2>&lt;p>The de facto standard in elementary school programming education is visual programming languages (block programming), represented by &amp;ldquo;Scratch&amp;rdquo; developed by the MIT Media Lab. The fact that it allows beginners to visually and intuitively learn the three basic algorithmic control structures—sequence, selection, and iteration—by combining puzzle-like blocks using an intuitive graphical interface makes it a great invention that deserves high praise as introductory education.&lt;/p>
&lt;p>However, there is a major pitfall here, which can be called the &amp;ldquo;trap of abstraction.&amp;rdquo; That is the cruel reality that &amp;ldquo;transitioning from visual programming to a full-fledged text-based programming language (Python, JavaScript, C++, Rust, etc.) is extremely difficult, and many learners drop out at this stage.&amp;rdquo;&lt;/p>
&lt;h3 id="the-wall-of-abstraction-and-the-black-boxing-of-computer-science">The Wall of Abstraction and the Black-Boxing of Computer Science
&lt;/h3>&lt;p>Visual programming environments like Scratch highly abstract and intentionally hide (encapsulate) the fundamental elements of computer science, such as the complex syntax of programming, strict type systems, and memory lifecycle management. While this is excellent for lowering the cognitive load on beginners, it becomes a massive barrier when advancing to genuine engineering. In actual software development, an understanding of variable scope (local and global variables), complex data structures (arrays, linked lists, hash tables, binary search trees, graphs), pointer manipulation, and memory heap and stack regions is absolutely essential.&lt;/p>
&lt;p>The following Mermaid diagram visualizes the learning hurdles and dropout points that beginners face during the transition from visual programming to authentic computer science.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Elementary School: Scratch (Visual/Block-based)&amp;#34;] --&amp;gt; B{&amp;#34;Junior High: The Wall of Transition to Text Languages&amp;#34;}
B --&amp;gt;|&amp;#34;Frustration from strict syntax errors&amp;#34;| C[&amp;#34;Dropout (Syntax Allergy)&amp;#34;]
B --&amp;gt;|&amp;#34;Lack of conceptual understanding of variables and static typing&amp;#34;| D[&amp;#34;Dropout (The Wall of Types)&amp;#34;]
B --&amp;gt;|&amp;#34;Successful Transition&amp;#34;| E[&amp;#34;High School: Information I (Basics of Python/JavaScript, etc.)&amp;#34;]
E --&amp;gt; F{&amp;#34;The Wall of Algorithm Design and Data Structures&amp;#34;}
F --&amp;gt;|&amp;#34;Lack of understanding of time and space complexity&amp;#34;| G[&amp;#34;Inefficient Code (Performance degradation from mass-producing O(N^2))&amp;#34;]
F --&amp;gt;|&amp;#34;Black-boxing of memory management and references&amp;#34;| H[&amp;#34;Becoming a coder who only does superficial API calls&amp;#34;]
F --&amp;gt;|&amp;#34;Conceptual Breakthrough&amp;#34;| I[&amp;#34;Full-scale CS Learning (C/C++, Java, Low-level Architecture)&amp;#34;]
I --&amp;gt; J[&amp;#34;Highly skilled IT professionals coveted by the industry&amp;#34;]
classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef error fill:#ffcccc,stroke:#cc0000,stroke-width:2px;
classDef success fill:#ccffcc,stroke:#00cc00,stroke-width:2px;
class C,D,G,H error;
class J success;
&lt;/pre>
&lt;p>As is evident from this flowchart, merely accumulating the experience of &amp;ldquo;writing code to move characters on a screen&amp;rdquo; will not cultivate true software engineers who can design scalable distributed system architectures and optimize performance down to the millisecond. Between the task of assembling colorful Scratch blocks with a mouse and reading the C source code of the Linux kernel to trace the behavior of the TCP/IP stack, there lies an absolute conceptual disconnect that cannot be dismissed simply as &amp;ldquo;a difference in the language used.&amp;rdquo;&lt;/p>
&lt;h2 id="3-the-limits-of-coding-without-mathematics-and-discrete-logic-an-approach-from-computational-complexity-theory">3. The Limits of Coding Without &amp;ldquo;Mathematics&amp;rdquo; and &amp;ldquo;Discrete Logic&amp;rdquo;: An Approach from Computational Complexity Theory
&lt;/h2>&lt;p>The greatest weakness and a potentially fatal flaw in Japan&amp;rsquo;s programming education curriculum is the overwhelming lack of integration between &amp;ldquo;coding skills&amp;rdquo; and &amp;ldquo;mathematics / discrete mathematics.&amp;rdquo; In top-tier computer science education, such as in the United States and India, the emphasis is placed on algorithm efficiency, mathematical logic, and mathematical proofs rather than the syntax of the programming language itself. This is because code is merely a translation of mathematical formulas.&lt;/p>
&lt;h3 id="the-absolute-dominance-of-time-complexity-and-space-complexity-big-o-notation">The Absolute Dominance of Time Complexity and Space Complexity (Big O Notation)
&lt;/h3>&lt;p>When evaluating and designing software performance, the concepts of Time Complexity and Space Complexity are unavoidable. Landau&amp;rsquo;s asymptotic notation (Big O Notation) indicates how execution time and memory consumption increase when the input data size to an algorithm is $N$.&lt;/p>
&lt;p>Mathematically, $f(x) = O(g(x))$ is strictly defined as follows:&lt;/p>
$$
\exists C > 0, \exists x_0 > 0, \forall x > x_0, |f(x)| \le C \cdot |g(x)|
$$&lt;p>In Japan&amp;rsquo;s information education, when learning about data sorting, for example, there are cases where it simply ends with calling a built-in method like &lt;code>array.sort()&lt;/code> in Python. However, what is truly required in information engineering is the mathematical understanding and proof of why the simple Bubble Sort is never used in practical domains, and why Quick Sort, Merge Sort, or Timsort are adopted as standard libraries.&lt;/p>
&lt;p>Below are the average time complexities of representative sorting algorithms.&lt;/p>
&lt;ul>
&lt;li>Bubble Sort: $O(N^2)$&lt;/li>
&lt;li>Selection Sort: $O(N^2)$&lt;/li>
&lt;li>Insertion Sort: $O(N^2)$&lt;/li>
&lt;li>Merge Sort: $O(N \log N)$&lt;/li>
&lt;li>Quick Sort: $O(N \log N)$&lt;/li>
&lt;li>Heap Sort: $O(N \log N)$&lt;/li>
&lt;/ul>
&lt;p>For instance, the time complexity $T(N)$ of Merge Sort is expressed by the following recurrence relation based on the Divide and Conquer paradigm.&lt;/p>
$$
T(N) = 2T\left(\frac{N}{2}\right) + O(N)
$$&lt;p>By expanding and solving this recursive relation using the Master Theorem, the ideal computational complexity $T(N) = O(N \log N)$ is derived.&lt;/p>
$$
T(N) = \Theta(N \log_2 N)
$$&lt;p>In modern big data analytics and web-scale traffic processing, the order of $N$ is massive, reaching hundreds of millions or billions. If an ignorant programmer implements an inefficient $O(N^2)$ algorithm, it would require a staggering $10^{12}$ (1 trillion) useless comparison operations for data size $N = 10^6$, effectively causing the system to freeze and crash. On the other hand, $O(N \log N)$ would complete in about $2 \times 10^7$ (20 million) operations. To claim &amp;ldquo;I can program&amp;rdquo; without this cruelly rigorous mathematical backing is like building a skyscraper without knowing structural mechanics, which is extremely dangerous.&lt;/p>
&lt;h2 id="4-the-black-boxing-of-memory-management-and-system-architecture">4. The Black-Boxing of Memory Management and System Architecture
&lt;/h2>&lt;p>At an even deeper layer is the complete omission of the understanding of Memory Management and CPU architecture. Learners who have only been taught high-level languages with Garbage Collection (GC), like Python and JavaScript, in schools today will never in their lives be conscious of where variables and objects are physically allocated in RAM (heap vs. stack), how they are assigned, and when and how they are freed.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c" data-lang="c">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Example of explicit and direct memory allocation and pointer manipulation in C
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdio.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdlib.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1000000&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Dynamically allocate memory consecutively in the heap (System call to the OS)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">array&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="nf">malloc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">array&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">fprintf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">stderr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;Memory allocation failed! Out of memory.&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Initializing the array using pointer arithmetic
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">++&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">array&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Equivalent to array[i] = i * 2
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Explicit resource deallocation to prevent Memory Leaks
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="nf">free&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">array&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">array&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Prevent dangling pointers
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Knowledge of pointers (direct references to memory addresses), data placement to maximize CPU cache hierarchy (L1/L2/L3 cache) hit rates (Data Locality), and Race Conditions and mutual exclusion (Mutex/Semaphores) in multi-threaded environments are absolutely essential for developing high-performance backend systems, 3D game engines, or embedded systems for IoT. The current curriculum by the Ministry of Education, Culture, Sports, Science and Technology is focused solely on &amp;ldquo;running superficial applications&amp;rdquo; and has severely deviated from the original academic goal of &amp;ldquo;understanding the depths of computer science.&amp;rdquo;&lt;/p>
&lt;h2 id="5-the-wall-of-databases-and-persistence-the-absence-of-relational-algebra">5. The Wall of Databases and Persistence: The Absence of Relational Algebra
&lt;/h2>&lt;p>In modern applications, data saving and retrieval (persistence) is an unavoidable theme. However, much of school education remains stuck in &amp;ldquo;data processing in memory,&amp;rdquo; which disappears once the program finishes executing. The mathematical theory behind Relational Databases (RDBMS) and SQL, namely the &amp;ldquo;Relational Algebra&amp;rdquo; proposed by Dr. Edgar F. Codd, is rarely taught.&lt;/p>
&lt;p>Database operations are defined by the following basic operations based on set theory:&lt;/p>
&lt;ul>
&lt;li>Selection ($\sigma$): Extracting tuples (rows) that satisfy a condition&lt;/li>
&lt;li>Projection ($\pi$): Extracting specific attributes (columns)&lt;/li>
&lt;li>Join ($\bowtie$): Conditional intersection of multiple relations&lt;/li>
&lt;/ul>
&lt;p>Furthermore, learning the structure of the &amp;ldquo;B-Tree index&amp;rdquo; to instantly search for the desired data from a vast number of records is the best practical application of data structures. The B-Tree minimizes disk I/O operations while guaranteeing a search speed of $O(\log N)$. Without knowing the ACID properties (Atomicity, Consistency, Isolation, Durability) of a transaction, it is impossible to build robust systems.&lt;/p>
&lt;h2 id="6-security-and-cryptography-the-social-infrastructure-supported-by-the-difficulty-of-prime-factorization">6. Security and Cryptography: The Social Infrastructure Supported by the Difficulty of Prime Factorization
&lt;/h2>&lt;p>While superficial security education like &amp;ldquo;Let&amp;rsquo;s make passwords complex&amp;rdquo; and &amp;ldquo;Don&amp;rsquo;t click on suspicious links&amp;rdquo; is conducted in information literacy education, the mathematics of &amp;ldquo;Cryptography&amp;rdquo; that fundamentally supports internet society is almost never taught.&lt;/p>
&lt;p>The HTTPS communications and digital signatures we use every day are protected by public-key cryptography, such as RSA cryptography. The security of RSA relies on the mathematical difficulty (considered an NP-intermediate problem) that &amp;ldquo;the prime factorization of massive integers cannot be solved within a realistic time frame by current classical computers.&amp;rdquo;&lt;/p>
&lt;p>The mathematical formulas underlying RSA cryptography are beautiful applications of Euler&amp;rsquo;s totient function and Fermat&amp;rsquo;s Little Theorem.&lt;/p>
&lt;ol>
&lt;li>Choose two massive prime numbers $p$ and $q$&lt;/li>
&lt;li>Calculate $n = p \times q$ (This becomes part of the public key)&lt;/li>
&lt;li>Calculate $\phi(n) = (p-1)(q-1)$&lt;/li>
&lt;li>Choose $e$ and $d$ such that $e \times d \equiv 1 \pmod{\phi(n)}$&lt;/li>
&lt;li>Encryption: $C \equiv M^e \pmod{n}$&lt;/li>
&lt;li>Decryption: $M \equiv C^d \pmod{n}$&lt;/li>
&lt;/ol>
&lt;p>In this way, programming education only truly unleashes its power when closely linked with mathematics education. The process of translating mathematical formulas into code and implementing them in society is the true essence of science.&lt;/p>
&lt;h2 id="7-the-giga-school-concept-and-the-hopeless-limits-of-infrastructure-chromebooks-and-cloud-ides">7. The GIGA School Concept and the Hopeless Limits of Infrastructure: Chromebooks and Cloud IDEs
&lt;/h2>&lt;p>When discussing IT education in Japan, one cannot ignore the &amp;ldquo;GIGA School Concept,&amp;rdquo; a national project promoted by the Ministry of Education with a massive budget. This initiative to provide &amp;ldquo;one device per student&amp;rdquo; and high-speed network environments to elementary and junior high school students nationwide was expected to be a catalyst to catch up on the delay in digitalization. However, the hardware specs and architectures of the devices actually distributed have become a severe hindrance to full-scale programming education.&lt;/p>
&lt;h3 id="low-spec-devices-and-the-loss-of-local-development-environments">Low-Spec Devices and the Loss of Local Development Environments
&lt;/h3>&lt;p>Many of the devices introduced as standard under the GIGA School Concept are extremely cheap Chromebooks, iPads, or budget Windows devices. Their standard specs are as follows:&lt;/p>
&lt;ul>
&lt;li>CPU: Intel Celeron or budget ARM processors&lt;/li>
&lt;li>Memory (RAM): 4GB (barely enough to run a modern OS)&lt;/li>
&lt;li>Storage (eMMC): 32GB to 64GB (extremely slow I/O speeds)&lt;/li>
&lt;/ul>
&lt;p>Due to these weak hardware constraints, it is virtually impossible to set up the &amp;ldquo;local development environments&amp;rdquo; that professional engineers use daily. Attempting to launch Linux containers using Docker, running heavy IDEs like Visual Studio Code with full features, or starting local Node.js or Python servers to install heavy libraries will immediately lead to memory exhaustion and system freezes.&lt;/p>
&lt;p>As a result, educational frontlines are forced to rely entirely on cloud IDEs that run in the browser (such as Google Colaboratory, Replit, or lightweight web tools proprietary to textbook publishers).&lt;/p>
&lt;pre class="mermaid">
flowchart LR
subgraph &amp;#34;GIGA Devices (Chromebook / iPad / Budget Windows)&amp;#34;
A[&amp;#34;Web Browser (UI rendering only)&amp;#34;]
end
subgraph &amp;#34;Remote Cloud Infrastructure (AWS / GCP, etc.)&amp;#34;
B[&amp;#34;Cloud IDE Web Server&amp;#34;]
C[&amp;#34;Backend Compile/Execution Environment&amp;#34;]
D[&amp;#34;Persistent File Storage&amp;#34;]
end
A --&amp;gt;|&amp;#34;HTTP/WebSocket Communication: Severe latency due to narrow school network lines&amp;#34;| B
B &amp;lt;--&amp;gt; C
B &amp;lt;--&amp;gt; D
&lt;/pre>
&lt;p>Complete reliance on cloud IDEs causes the following critical educational deficiencies:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Lack of understanding of file systems and OS architecture&lt;/strong>: Without a local environment, students never acquire UNIX literacy—essential knowledge that IT engineers should use as naturally as breathing, such as directory structures, absolute and relative paths, environment variables, file permissions, and OS operations via the CLI (Command Line Interface).&lt;/li>
&lt;li>&lt;strong>Network latency and infrastructure vulnerabilities&lt;/strong>: Because constant connectivity is assumed, there are frequent nationwide incidents where school network bandwidth becomes congested the moment all students access it simultaneously, causing browsers to freeze and learning to completely stop.&lt;/li>
&lt;li>&lt;strong>Deprivation of version control (Git) experience&lt;/strong>: Students are robbed of the opportunity to have the concepts of Git and GitHub hammered into them through a black terminal screen, preventing them from learning how to manage source code history and collaborate globally.&lt;/li>
&lt;/ol>
&lt;p>When professional software engineers develop, operating within a terminal (shell) is the absolute foundation. Without the gritty experience of running commands like &lt;code>ls&lt;/code>, &lt;code>cd&lt;/code>, &lt;code>grep&lt;/code>, &lt;code>chmod&lt;/code>, and &lt;code>git rebase&lt;/code> to interact directly with the local OS kernel, cultivating true IT talent is impossible. Playing solely within the sandbox of a Chromebook will never produce full-stack engineers who can oversee the entire system.&lt;/p>
&lt;h2 id="8-the-despairing-gap-with-the-world-the-disconnect-between-industry-demands-and-school-education">8. The Despairing Gap with the World: The Disconnect Between Industry Demands and School Education
&lt;/h2>&lt;p>The final and arguably national crisis-level challenge facing Japan&amp;rsquo;s IT education is the overwhelming decline in competitiveness in a global context.&lt;/p>
&lt;h3 id="fierce-computer-science-education-in-other-countries">Fierce Computer Science Education in Other Countries
&lt;/h3>&lt;p>In the UK, the subject &amp;ldquo;Computing&amp;rdquo; has been mandatory from age 5 (Key Stage 1) since as early as 2014. Their curriculum goes far beyond mere &amp;ldquo;programming experiences,&amp;rdquo; dealing with highly academic and systematic computer science, from logical algorithm design and understanding logic circuits via Boolean algebra, to network topologies and hardware architecture.&lt;/p>
&lt;p>In the US, there are rigorous standard K-12 curriculums established by the CSTA (Computer Science Teachers Association). In the AP (Advanced Placement) Computer Science A course taken by high school students, they are tested on authentic object-oriented programming using Java, polymorphism, recursion, implementation of data structures, and algorithmic complexity evaluation at a level comparable to a first-year university course. The fierce STEM education in countries like India and China, and the depth of the elite talent they produce, hardly need further mention.&lt;/p>
&lt;h3 id="the-despairing-disconnect-between-required-skills-and-taught-skills">The Despairing Disconnect Between Required Skills and Taught Skills
&lt;/h3>&lt;p>The requirements that modern industries—especially globally expanding mega-ventures and tech giants (like GAFAM)—demand of new graduate software engineers are advancing at a terrifying speed every year. Extensive and deep expertise is required, including the construction of cloud-native infrastructure (AWS, GCP, Kubernetes), the design of distributed systems using microservice architectures, the implementation of machine learning pipelines, and advanced security knowledge.&lt;/p>
&lt;p>The graph below conceptually illustrates the despairing gap between the skill attainment levels provided by Japan&amp;rsquo;s current school education and the skill levels demanded by the frontline industry.&lt;/p>
&lt;pre class="mermaid">
xychart-beta
title Skills Provided by Japanese School Education vs. Skill Levels Demanded by Industry
x-axis [&amp;#34;Visual Languages&amp;#34;, &amp;#34;Basic Syntax/Variables&amp;#34;, &amp;#34;Algorithms/Complexity&amp;#34;, &amp;#34;OS/Networks&amp;#34;, &amp;#34;DB/System Design&amp;#34;, &amp;#34;Cloud/Distributed Arch&amp;#34;]
y-axis &amp;#34;Attainment / Demand (%)&amp;#34; 0 --&amp;gt; 100
line &amp;#34;Current Attainment Level in School Education&amp;#34; [95, 60, 15, 5, 2, 0]
line &amp;#34;Level Demanded by Industry / Tech Companies&amp;#34; [0, 20, 85, 90, 95, 100]
&lt;/pre>
&lt;p>To bridge this massive gap (Death Valley), a radical paradigm shift in school education and enormous investment are required. With an overwhelming nationwide shortage of specialized &amp;ldquo;Information&amp;rdquo; teachers, math, science, or technology and home economics teachers are currently teaching programming on the side with insufficient training. Under this system, Japan will never be able to produce top-tier engineers who can compete globally.&lt;/p>
&lt;h2 id="9-the-plummeting-value-of-coding-in-the-ai-era-llms">9. The Plummeting Value of &amp;ldquo;Coding&amp;rdquo; in the AI Era (LLMs)
&lt;/h2>&lt;p>Further complicating the situation is the explosive spread of Large Language Models (LLMs) like ChatGPT and AI coding assistants like GitHub Copilot. In an era where AI can instantly generate perfect code from natural language instructions and even write test codes, the market value of so-called &amp;ldquo;Coders&amp;rdquo; who merely &amp;ldquo;know Python syntax&amp;rdquo; or &amp;ldquo;know how to call an API&amp;rdquo; is rapidly plummeting.&lt;/p>
&lt;p>What is required of human engineers in the AI era is not the memorization of programming language syntax. It is the following abilities:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Requirements Definition and Domain Modeling&lt;/strong>: The ability to extract complex real-world problems to be solved and model them as a system.&lt;/li>
&lt;li>&lt;strong>Architecture Design&lt;/strong>: The ability to draw a system-wide blueprint that guarantees scalability, availability, and maintainability.&lt;/li>
&lt;li>&lt;strong>Mathematical and Logical Verification&lt;/strong>: The ability to theoretically verify and prove whether the AI-generated code has security holes or computational bottlenecks.&lt;/li>
&lt;/ol>
&lt;p>Ironically, all of these lie not in &amp;ldquo;superficial programming,&amp;rdquo; but in the deep and abstract realms of &amp;ldquo;computer science and mathematics.&amp;rdquo; If Japanese education is only teaching &amp;ldquo;downstream skills that are easily replaced by AI,&amp;rdquo; it must be called a national loss.&lt;/p>
&lt;h2 id="10-towards-the-integration-of-mathematical-sciences-and-programming-a-proposal-for-next-generation-education">10. Towards the Integration of Mathematical Sciences and Programming: A Proposal for Next-Generation Education
&lt;/h2>&lt;p>The urgent task for future IT education in Japan is to break away from &amp;ldquo;making programming the goal or a mere tool&amp;rdquo; and to return to the &amp;ldquo;exploration of computer science as a mathematical science.&amp;rdquo; A programming language is merely a tool to express thought, and the mathematical and logical structures underlying it possess universal value that will not fade even as times change.&lt;/p>
&lt;p>For example, at the core of Artificial Intelligence (AI) and machine learning, linear algebra (matrix operations and tensors), multivariable calculus (gradient descent), and probability and statistics (Bayesian inference and information theory) are intricately intertwined. The optimization of weights in deep learning neural networks is formulated by the Chain Rule using partial derivatives and backpropagation.&lt;/p>
$$
\frac{\partial L}{\partial w_{ij}^{(l)}} = \frac{\partial L}{\partial z_i^{(l+1)}} \cdot \frac{\partial z_i^{(l+1)}}{\partial w_{ij}^{(l)}} = \delta_i^{(l+1)} \cdot a_j^{(l)}
$$&lt;p>Professionals who can translate such advanced mathematical formulas into code, and optimally implement Parallel Computing while remaining conscious of GPU (CUDA) and TPU hardware architectures, are the ones who will lead the next-generation IT industry. That is why we must immediately steer away from superficial education that just makes students memorize syntax, and shift towards profound education that questions the First Principles of computation.&lt;/p>
&lt;h2 id="11-conclusion-the-steep-path-to-a-true-it-nation-and-our-resolve">11. Conclusion: The Steep Path to a True IT Nation and Our Resolve
&lt;/h2>&lt;p>There is no doubt that making programming education mandatory in the 2020s was a solid step forward in terms of making Japanese society as a whole widely recognize the &amp;ldquo;importance of IT and information.&amp;rdquo; However, it is merely &amp;ldquo;warm-up exercises&amp;rdquo; in a long journey.&lt;/p>
&lt;p>We must step beyond the fun of moving a cat character in Scratch, move students with the mathematical beauty of an $O(N \log N)$ algorithm, and teach them the excitement of conversing with servers around the world via TCP packets from a black terminal screen. We must rebuild new educational infrastructures to overcome the hardware constraints of the GIGA School Concept, train and deploy instructors with advanced CS expertise, and sometimes boldly involve external professional engineers in school education.&lt;/p>
&lt;p>The challenges facing Japan&amp;rsquo;s IT education are extremely deep, persistent, and complex. However, if we do not avert our eyes from these issues, and if industry, academia, and government work together in earnest to build an ecosystem that continuously produces not just &amp;ldquo;laborers who can write code according to specifications,&amp;rdquo; but &amp;ldquo;genuine engineers who can design and create systems from scratch,&amp;rdquo; Japan will once again be able to lead the world as a true IT nation.&lt;/p>
&lt;p>How we fight through the &amp;ldquo;aftermath&amp;rdquo; of mandatory programming—the most difficult and important phase—is testing the absolute seriousness and resolve of us adults right now.&lt;/p>
&lt;hr>
&lt;p>&lt;em>This article outlined the computational complexity theory and the infrastructural limits of the GIGA School Concept. We plan to cover more specialized computer science topics (such as details of distributed system algorithms and low-level memory management techniques) sequentially in future series.&lt;/em>&lt;/p></description></item><item><title>The Deepening of the 'New Digital Divide' Brought by the Evolution of Generative AI</title><link>http://kenji.blog/en/p/generative-ai-digital-divide/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/generative-ai-digital-divide/</guid><description>&lt;img src="http://kenji.blog/p/generative-ai-digital-divide/img/eyecatch.jpg" alt="Featured image of post The Deepening of the 'New Digital Divide' Brought by the Evolution of Generative AI" />&lt;h2 id="1-introduction-historical-transition-of-the-digital-divide-and-the-new-paradigm">1. Introduction: Historical Transition of the Digital Divide and the New Paradigm
&lt;/h2>&lt;p>Since the popularization of the internet, we have often heard the term &amp;ldquo;digital divide&amp;rdquo; (information gap). The early digital divide was primarily about &amp;ldquo;physical access rights.&amp;rdquo; In other words, it was a simple scenario where whether or not one had a computer or high-speed internet connection determined access to information and economic opportunities. Later, as smartphones and broadband connections became commoditized, the focus of the divide shifted to &amp;ldquo;IT literacy&amp;rdquo; (information utilization capability). This involved the software and cognitive aspects, such as whether one could appropriately search for information using search engines or master software.&lt;/p>
&lt;p>However, the sudden emergence of Generative AI and the evolution of Large Language Models (LLMs) in the 2020s are fundamentally overturning this concept of the digital divide. What we are facing now is not merely a &amp;ldquo;divide in access to information&amp;rdquo; or a &amp;ldquo;divide in software operation skills.&amp;rdquo; It is a &amp;ldquo;divide in the ability to orchestrate (direct and integrate) AI,&amp;rdquo; a profound and irreversible &amp;ldquo;3rd Digital Divide&amp;rdquo; that determines whether an individual&amp;rsquo;s productivity is amplified exponentially or if they are left behind by the evolution of AI and lose relative value.&lt;/p>
&lt;p>In this article, we will unravel in great detail the true nature of this new digital divide brought about by Generative AI from three layers: the mathematical model of productivity, hardware architecture and cost, and the cognitive aspects of human beings.&lt;/p>
&lt;h2 id="2-from-access-to-orchestration-the-arrival-of-the-3rd-digital-divide">2. From &amp;ldquo;Access&amp;rdquo; to &amp;ldquo;Orchestration&amp;rdquo;: The Arrival of the 3rd Digital Divide
&lt;/h2>&lt;p>Past software tools were essentially &amp;ldquo;passive instruments.&amp;rdquo; The limitation of traditional software was that it returned deterministic results in response to the user&amp;rsquo;s explicit input (e.g., entering a formula in spreadsheet software to get a calculated result). However, current Generative AI, especially LLMs based on the Transformer architecture (GPT-4, Claude 3.5, Llama 3, etc.), act as &amp;ldquo;fragments of active intelligence.&amp;rdquo;&lt;/p>
&lt;p>Due to this paradigm shift, the required skill set for humans has dramatically changed from the &amp;ldquo;ability to operate tools&amp;rdquo; to the &amp;ldquo;ability to combine multiple AI agents and tools, and to design and direct autonomous workflows (AI Orchestration).&amp;rdquo; This can be called &amp;ldquo;AI Orchestration Literacy.&amp;rdquo;&lt;/p>
&lt;p>Below is the transition of the digital divide from the past to the present.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;1st Divide: Access to Hardware and Infrastructure (1990s-2000s)&amp;#34;] --&amp;gt; B[&amp;#34;2nd Divide: IT Literacy and Information Retrieval Skills (2010s)&amp;#34;]
B --&amp;gt; C[&amp;#34;3rd Divide: Prompting and Orchestration of Generative AI (2020s-)&amp;#34;]
C --&amp;gt; D[&amp;#34;Designing Autonomous Task Execution by AI&amp;#34;]
C --&amp;gt; E[&amp;#34;Integration of Multiple AI Agents (Agentic Workflows)&amp;#34;]
C --&amp;gt; F[&amp;#34;Advanced Information Verification and Hallucination Detection&amp;#34;]
&lt;/pre>
&lt;p>Moving beyond the boundaries of prompt engineering, we have now entered a stage where systems are made to autonomously solve problems using multi-agent frameworks like LangChain, AutoGen, and CrewAI. Between the &amp;ldquo;class that draws the blueprints and lets AI execute them&amp;rdquo; and the &amp;ldquo;class that still performs routine work manually,&amp;rdquo; a divergence in productivity is occurring at a speed that humanity has never experienced before.&lt;/p>
&lt;h2 id="3-the-matthew-effect-of-productivity-visualizing-the-divide-through-a-mathematical-approach">3. The Matthew Effect of Productivity: Visualizing the Divide through a Mathematical Approach
&lt;/h2>&lt;p>The &amp;ldquo;Matthew Effect,&amp;rdquo; derived from the New Testament saying &amp;ldquo;For to everyone who has, more will be given, and he will have abundance; but from him who does not have, even what he has will be taken away,&amp;rdquo; refers in sociology and economics to a phenomenon where early advantages lead to cumulative benefits. With the introduction of Generative AI, this Matthew Effect is strongly manifesting in the labor market and knowledge production.&lt;/p>
&lt;p>The productivity of an individual who effectively uses AI grows exponentially, not linearly, with time. This is because the time saved by AI can be further invested in building more advanced AI systems, optimizing prompts, and self-learning. Let us express this with a mathematical model.&lt;/p>
&lt;p>The productivity of a non-AI user $P_{human}(t)$ and the productivity of an AI orchestrator $P_{AI}(t)$ at a given time $t$ can be represented by the following models, respectively.&lt;/p>
$$
P_{human}(t) = P_0 (1 + r_{human})^t
$$&lt;p>
Here, $P_0$ is the initial productivity, and $r_{human}$ is the natural human learning rate (growth rate based on the experience curve). Generally, $r_{human}$ is very small, and growth tends to be arithmetic.&lt;/p>
&lt;p>On the other hand, the productivity of a user who fully utilizes AI combines the capability improvement rate of the AI model being used, $r_{model}$, and the compound interest effect of workflow automation by AI, $\alpha$.&lt;/p>
$$
P_{AI}(t) = P_0 \cdot \exp\left( \int_0^t (r_{human} + \alpha \cdot r_{model}(\tau)) d\tau \right)
$$&lt;p>Because the AI model itself is evolving exponentially (an increase in parameter count and computational complexity based on scaling laws), $r_{model}(t)$ itself increases over time. As a result, the difference in productivity between the two, $\Delta P(t)$, rapidly widens.&lt;/p>
$$
\Delta P(t) = P_{AI}(t) - P_{human}(t)
$$&lt;p>The graph below visually shows this divergence.&lt;/p>
&lt;pre class="mermaid">
xychart-beta
title Productivity Divergence Over Time (The Matthew Effect)
x-axis [&amp;#34;Year 1&amp;#34;, &amp;#34;Year 2&amp;#34;, &amp;#34;Year 3&amp;#34;, &amp;#34;Year 4&amp;#34;, &amp;#34;Year 5&amp;#34;, &amp;#34;Year 6&amp;#34;]
y-axis &amp;#34;Output Volume&amp;#34; 0 --&amp;gt; 200
line [10, 15, 30, 60, 110, 180]
line [10, 12, 14, 16, 18, 20]
&lt;/pre>
&lt;p>&lt;em>(Note: The blue line represents the productivity of the AI orchestrator, and the lower line represents the productivity of the non-AI user)&lt;/em>&lt;/p>
&lt;p>In the first year, the difference seems negligible, but each time the AI model evolves from GPT-3 to GPT-4, and further to its next generation, AI users enjoy a dramatic leap in productivity simply by plugging the new model into their existing automation pipelines. It becomes mathematically closer to impossible over time for non-AI users to close this gap.&lt;/p>
&lt;h2 id="4-the-hardware-divide-the-wall-of-local-inference-and-the-trap-of-cloud-apis">4. The Hardware Divide: The Wall of Local Inference and the Trap of Cloud APIs
&lt;/h2>&lt;p>The 3rd Digital Divide creates a new hardware gap not just in software skills, but in &amp;ldquo;access to compute (computational resources)&amp;rdquo; needed to run cutting-edge AI models.&lt;/p>
&lt;p>To utilize Large Language Models, there are mainly two approaches: &amp;ldquo;using Cloud APIs&amp;rdquo; or &amp;ldquo;running the model locally for inference.&amp;rdquo; Both have their pros and cons, which are forming a new economic and physical wall.&lt;/p>
&lt;h3 id="limitations-and-running-costs-of-cloud-apis">Limitations and Running Costs of Cloud APIs
&lt;/h3>&lt;p>State-of-the-art frontier models provided by OpenAI, Anthropic, and Google (GPT-4o, Claude 3.5 Sonnet, etc.) are generally accessed via API. However, if you build a highly autonomous agent (Agentic Workflow) that generates tens of thousands of API calls per day, the costs explode.&lt;/p>
&lt;p>The total cost of the API, $C_{cloud}$, depends on the volume of input and output tokens.&lt;/p>
$$
C_{cloud} = \sum_{i=1}^{N} \left( c_{in} \cdot T_{in}^{(i)} + c_{out} \cdot T_{out}^{(i)} \right)
$$&lt;p>
(Where $N$ is the number of requests, $T$ is the number of tokens, and $c$ is the unit price per token)&lt;/p>
&lt;p>When continuously performing large-scale data processing or vectorization for RAG (Retrieval-Augmented Generation), this variable cost can become a fatal burden for individual developers and small to medium-sized enterprises.&lt;/p>
&lt;h3 id="the-wall-of-local-llms-and-vram">The Wall of Local LLMs and VRAM
&lt;/h3>&lt;p>From the perspective of avoiding cloud costs and maintaining data privacy, the demand for running open-weight models like Meta&amp;rsquo;s Llama 3 and Mistral locally is increasing. However, the physical divide known as the &amp;ldquo;Wall of VRAM (Video RAM)&amp;rdquo; stands in the way here.&lt;/p>
&lt;p>The inference speed of an LLM depends more strongly on Memory Bandwidth rather than the calculation performance (FLOPS) of the GPU (it has a Memory-bound nature). Assuming the number of parameters of the model is $P$ and the precision is 16-bit (2 bytes), just loading the model into memory requires at least $2P$ bytes of VRAM. For example, a 70 billion (70B) parameter model demands over 140GB of VRAM.&lt;/p>
$$
VRAM_{required} \approx \left( \frac{P \times bits\_per\_weight}{8} \right) + Context\_Memory
$$&lt;p>Even with high-end GPUs available to general consumers (like the NVIDIA RTX 4090), VRAM is limited to 24GB, making it impossible to run a 70B class model as is. Here, &amp;ldquo;Quantization&amp;rdquo; technologies like AWQ and GGUF have emerged, and a technical struggle is taking place to find a compromise by compressing weights to 4-bit or 8-bit, but performance degradation (worsening of Perplexity) due to quantization is inevitable.&lt;/p>
&lt;p>Furthermore, in recent years, &amp;ldquo;AI PCs&amp;rdquo; equipped with NPUs (Neural Processing Units) have appeared, but the TOPS (Tera Operations Per Second) of current NPUs can only handle lightweight, small-scale models (SLMs: Small Language Models) at best. To truly perform highly advanced inference locally, you need the capital to build a multi-GPU environment costing millions of yen. This is the true nature of the &amp;ldquo;capital-intensive digital divide&amp;rdquo; in AI.&lt;/p>
&lt;h2 id="5-the-cognitive-divide-the-loop-of-hallucination-and-verification">5. The Cognitive Divide: The Loop of Hallucination and Verification
&lt;/h2>&lt;p>What is more terrifying than the disparity in hardware and skills is the &amp;ldquo;Cognitive Divide.&amp;rdquo; AI generates highly fluent and persuasive text, but at the same time, it causes &amp;ldquo;hallucinations,&amp;rdquo; outputting completely baseless information as if it were plausible.&lt;/p>
&lt;p>The divide that arises here is the separation between &amp;ldquo;the class that critically examines and verifies (fact-checks) AI output&amp;rdquo; and &amp;ldquo;the class that blindly believes AI output as an authoritative truth.&amp;rdquo; The former utilizes AI as a powerful brainstorming and drafting tool, performing quality assurance (QA) on the final output using their own domain knowledge. The latter sends incorrect information out into the world as is, which not only ruins their own credibility but also contributes to polluting the internet&amp;rsquo;s information space with spam-like content.&lt;/p>
&lt;p>The process of the Cognitive Verification Loop to prevent this is shown below.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Human Intent&amp;#34;] --&amp;gt; B[&amp;#34;Prompt Input to AI (Prompting)&amp;#34;]
B --&amp;gt; C[&amp;#34;Generation by AI Model (Generation)&amp;#34;]
C --&amp;gt; D{&amp;#34;Cognitive Verification&amp;#34;}
D -- Doubts / Logical Failures Exist --&amp;gt; E[&amp;#34;Fact-checking using RAG or external tools&amp;#34;]
E --&amp;gt; F[&amp;#34;Readjusting / Refining Prompts&amp;#34;]
F --&amp;gt; B
D -- Facts and Logic are Valid --&amp;gt; G[&amp;#34;Final adjustments based on human domain knowledge&amp;#34;]
G --&amp;gt; H[&amp;#34;Output of Final Deliverable&amp;#34;]
&lt;/pre>
&lt;p>To iterate through this loop, one needs not only to understand how to use AI but also to possess deep &amp;ldquo;domain knowledge&amp;rdquo; and &amp;ldquo;critical thinking&amp;rdquo; concerning the output domain. Ironically, the more AI evolves, the more the requirements for humans shift away from basic operational skills to highly advanced cognitive abilities, such as philosophical and logical reasoning and the cultural sophistication to distinguish truth from falsehood.&lt;/p>
&lt;h2 id="6-the-new-class-society-ai-orchestrators-and-manual-workers">6. The New Class Society: AI Orchestrators and Manual Workers
&lt;/h2>&lt;p>In a future where these disparities have reached their limits (or a reality currently unfolding), the labor market will polarize in unprecedented ways.&lt;/p>
&lt;p>&lt;strong>1. AI Orchestrators (Top 1-5%)&lt;/strong>
In their fields of expertise, they construct workflows that autonomously run multiple AI agents. They delegate the majority of processes, such as research, coding, data analysis, and report generation, to AI, specializing themselves in &amp;ldquo;process design,&amp;rdquo; &amp;ldquo;exception handling,&amp;rdquo; and &amp;ldquo;final decision-making.&amp;rdquo; Their productivity reaches tens to hundreds of times that of traditional workers, creating immense economic value.&lt;/p>
&lt;p>&lt;strong>2. Traditional Knowledge Workers / Manual Workers&lt;/strong>
These are people who write code with their own hands, operate Excel with their own hands, and write text with their own hands. Their jobs will gradually be replaced by AI, or they will be relegated to &amp;ldquo;end-point monitoring and maintenance&amp;rdquo; of systems created by AI orchestrators, or forced into &amp;ldquo;labor in physical space.&amp;rdquo; Intellectual labor that does not utilize AI faces the risk of entirely losing its market competitiveness.&lt;/p>
&lt;h2 id="7-strategies-and-social-prescriptions-for-surviving-the-stratified-society">7. Strategies and Social Prescriptions for Surviving the Stratified Society
&lt;/h2>&lt;p>Amidst this overwhelming divide, how should individuals, corporations, and society adapt?&lt;/p>
&lt;h3 id="individual-strategies-adapting-to-the-paradigm-shift">Individual Strategies: Adapting to the Paradigm Shift
&lt;/h3>&lt;p>The most important thing is to discard the underestimation that &amp;ldquo;AI is just a chatbot.&amp;rdquo; It is necessary to develop the habit of treating AI as an &amp;ldquo;advanced intern&amp;rdquo; or a &amp;ldquo;team of experts&amp;rdquo; and constantly thinking about how you can break down your own work processes and delegate them to AI (Task Decomposition). Also, even if you cannot program, learning about the concept of APIs and data structuring (like JSON) enables powerful automation by combining No-Code/Low-Code tools (Zapier, Make, etc.) with AI.&lt;/p>
&lt;h3 id="corporate-strategies-ai-native-organizational-design">Corporate Strategies: AI-Native Organizational Design
&lt;/h3>&lt;p>For companies, simply &amp;ldquo;distributing ChatGPT accounts&amp;rdquo; is not enough. It requires infrastructure investment, such as redesigning the entire workflow around AI (BPR: Business Process Re-engineering), building a secure RAG environment, and fine-tuning local models with internal proprietary knowledge. Furthermore, introducing new KPIs to evaluate employees&amp;rsquo; AI orchestration capabilities is also required.&lt;/p>
&lt;h3 id="social-prescriptions-ai-infrastructure-as-a-public-good">Social Prescriptions: AI Infrastructure as a Public Good
&lt;/h3>&lt;p>At the national and societal levels, safety nets and education are needed so that the 3rd Digital Divide does not lead to severe economic disparities and social unrest. For instance, public support for the R&amp;amp;D of open-source AI models and making &amp;ldquo;Critical AI Literacy&amp;rdquo; compulsory in educational institutions can be considered. In addition, updating appropriate legal regulations and antitrust laws to prevent the &amp;ldquo;monopolization of AI models and computing resources&amp;rdquo; by Big Tech companies should be brought to the table for discussion.&lt;/p>
&lt;h2 id="8-conclusion-ride-the-wave-of-evolution-or-be-swallowed-by-it">8. Conclusion: Ride the Wave of Evolution, or Be Swallowed by It
&lt;/h2>&lt;p>The &amp;ldquo;new digital divide&amp;rdquo; caused by Generative AI is restructuring our society more rapidly and broadly than any technological innovation in the past. This divide appears as a difference in hardware computational resources, the ability to invest in Cloud APIs, and above all, the &amp;ldquo;cognitive and logical skills to orchestrate AI.&amp;rdquo;&lt;/p>
&lt;p>As the Matthew Effect of productivity indicates, this gap will expand unbridgeably over time. What we must do now is neither to fear the evolution of AI nor to blindly believe in it. It is to deeply understand the characteristics of AI, the greatest Intelligence Amplifier in human history, and decisively execute an &amp;ldquo;intellectual self-transformation&amp;rdquo; to update our own thinking and workflows.&lt;/p>
&lt;p>Will we stand on this side of the new digital divide, or remain on the other side? That choice is entrusted to our daily learning and actions, right at this very moment.&lt;/p>
&lt;hr>
&lt;p>&lt;em>If you have any opinions on this article or specific case studies on introducing AI orchestration, please send them to the comment section or the author&amp;rsquo;s social media.&lt;/em>&lt;/p></description></item><item><title>The Trade-off Between Privacy and Convenience: The Fate of Personal Information in the Era of Big Data</title><link>http://kenji.blog/en/p/privacy-vs-convenience-big-data/</link><pubDate>Sat, 12 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/privacy-vs-convenience-big-data/</guid><description>&lt;img src="http://kenji.blog/p/privacy-vs-convenience-big-data/img/eyecatch.jpg" alt="Featured image of post The Trade-off Between Privacy and Convenience: The Fate of Personal Information in the Era of Big Data" />&lt;h1 id="the-trade-off-between-privacy-and-convenience-the-fate-of-personal-information-in-the-era-of-big-data">The Trade-off Between Privacy and Convenience: The Fate of Personal Information in the Era of Big Data
&lt;/h1>&lt;p>In today&amp;rsquo;s digital society, we generate enormous amounts of data in our daily lives. A wide variety of &amp;ldquo;big data&amp;rdquo;—such as smartphone location information, social media posts, online shopping purchase histories, and health data recorded by wearable devices—is constantly being collected. This data is essential for the evolution of AI (Artificial Intelligence) and the provision of personalized services, making our lives more convenient and richer.&lt;/p>
&lt;p>However, on the other hand, the risk of privacy infringement associated with the collection and use of personal information has emerged as a serious social issue. The risks lurking behind convenience have reached an undeniable scale, including data breaches, the provision of data to third parties without user consent, and concerns about a surveillance society by the state. This article provides an extremely detailed technical explanation of how technology and legal regulations are approaching the modern dilemma of this &amp;ldquo;trade-off between privacy and convenience,&amp;rdquo; along with the latest trends.&lt;/p>
&lt;h2 id="1-the-paradigm-of-a-data-driven-society-and-the-evolution-of-data-architecture">1. The Paradigm of a Data-Driven Society and the Evolution of Data Architecture
&lt;/h2>&lt;p>To collect and utilize data efficiently, companies are adopting various data architectures. There is an ongoing paradigm shift from the once-mainstream &amp;ldquo;Data Warehouse&amp;rdquo; to a &amp;ldquo;Data Lake&amp;rdquo; that centrally manages all data, including unstructured data, and now to a &amp;ldquo;Data Mesh,&amp;rdquo; which is a decentralized architecture.&lt;/p>
&lt;h3 id="centralized-data-lakes-and-anonymization-pipelines">Centralized Data Lakes and Anonymization Pipelines
&lt;/h3>&lt;p>A data lake is a storage repository that stores large amounts of raw data in its native format. However, using raw data containing PII (Personally Identifiable Information) directly for analysis causes serious compliance violations. Therefore, a strict &amp;ldquo;Anonymization Pipeline&amp;rdquo; is implemented between the data lake and the analysis environment.&lt;/p>
&lt;p>The figure below shows the flow of an anonymization pipeline in a typical centralized data lake.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Data Sources (Web, IoT, Mobile)&amp;#34;] --&amp;gt;|&amp;#34;Ingestion&amp;#34;| B[&amp;#34;Raw Data Zone (Untouched)&amp;#34;]
B --&amp;gt;|&amp;#34;ETL Process&amp;#34;| C[&amp;#34;Anonymization &amp;amp; Cleansing Pipeline&amp;#34;]
C --&amp;gt;|&amp;#34;Pseudonymization / Tokenization&amp;#34;| D[&amp;#34;Trusted Zone (k-anonymized)&amp;#34;]
D --&amp;gt;|&amp;#34;Feature Engineering&amp;#34;| E[&amp;#34;Refined Zone (Ready for ML)&amp;#34;]
E --&amp;gt;|&amp;#34;Model Training&amp;#34;| F[&amp;#34;BI Tools &amp;amp; ML Models&amp;#34;]
C --&amp;gt;|&amp;#34;Audit Logs&amp;#34;| G[&amp;#34;Security &amp;amp; Compliance Hub&amp;#34;]
&lt;/pre>
&lt;p>In such pipelines, processes like hashing, masking, and encryption are automatically applied when data flows in. However, as discussed later, simple masking or pseudonymization cannot completely eliminate the risk of &amp;ldquo;Re-identification&amp;rdquo; through matching with other data sources.&lt;/p>
&lt;h2 id="2-a-deep-understanding-of-privacy-enhancing-technologies-pets">2. A Deep Understanding of Privacy-Enhancing Technologies (PETs)
&lt;/h2>&lt;p>The key to balancing privacy and data utilization is &amp;ldquo;Privacy-Enhancing Technologies (PETs)&amp;rdquo;. Here, we provide detailed mathematical definitions and technical implementations of the major PETs that play extremely important roles in modern big data analysis and machine learning.&lt;/p>
&lt;h3 id="21-k-anonymity-and-its-extensions">2.1 K-Anonymity and Its Extensions
&lt;/h3>&lt;p>Proposed by Latanya Sweeney and Pierangela Samarati in 1998, &amp;ldquo;k-anonymity&amp;rdquo; is a foundational concept for privacy protection in data publication. It means ensuring that every record in a dataset is indistinguishable from at least $k-1$ other records.&lt;/p>
&lt;p>Attributes in a database are broadly classified into the following three categories:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Explicit Identifiers&lt;/strong>: Information that can directly identify an individual, such as names and social security numbers (these are usually deleted or encrypted).&lt;/li>
&lt;li>&lt;strong>Quasi-Identifiers (QIs)&lt;/strong>: Information that cannot identify an individual on its own, such as age, gender, and zip code, but can be used to identify them when combined.&lt;/li>
&lt;li>&lt;strong>Sensitive Attributes&lt;/strong>: Information that should be protected, such as medical conditions or annual income.&lt;/li>
&lt;/ol>
&lt;p>K-anonymity guarantees that there are always at least $k$ combinations of quasi-identifiers (Equivalence Classes). However, k-anonymity is vulnerable to &amp;ldquo;Homogeneity Attacks&amp;rdquo; and &amp;ldquo;Background Knowledge Attacks&amp;rdquo;. For example, if all $k$ people belonging to an equivalence class have the same medical condition (sensitive attribute), the condition will be identified even if k-anonymity is maintained.&lt;/p>
&lt;p>To overcome this, the following extended models have been proposed:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>l-diversity&lt;/strong>: Guarantees that sensitive attributes have at least $l$ different values in each equivalence class.&lt;/li>
&lt;li>&lt;strong>t-closeness&lt;/strong>: Ensures that the distance (such as Earth Mover&amp;rsquo;s Distance) between the distribution of sensitive attributes in each equivalence class and the distribution of sensitive attributes in the entire dataset is less than or equal to a threshold $t$.&lt;/li>
&lt;/ul>
&lt;h3 id="22-differential-privacy-dp">2.2 Differential Privacy (DP)
&lt;/h3>&lt;p>Overcoming the limitations of the k-anonymity model, &amp;ldquo;Differential Privacy&amp;rdquo; proposed by Cynthia Dwork et al. in 2006 is now widely adopted as the strongest and most mathematically rigorous privacy standard. Tech giants such as Apple, Google, and Microsoft apply this $\epsilon$-differential privacy when collecting telemetry and statistical data from users.&lt;/p>
&lt;h4 id="mathematical-definition-of-differential-privacy">Mathematical Definition of Differential Privacy
&lt;/h4>&lt;p>A randomized algorithm $\mathcal{M}$ satisfies $\epsilon$-differential privacy if, for any two adjacent datasets $D$ and $D'$ differing by only one record (i.e., $\|D - D'\|_1 = 1$), and for any subset of outputs $S \subseteq \text{Range}(\mathcal{M})$, the following inequality holds:&lt;/p>
$$ \Pr[\mathcal{M}(D) \in S] \le e^\epsilon \Pr[\mathcal{M}(D') \in S] $$&lt;p>Here, $\epsilon$ (privacy budget) is a non-negative parameter that controls the level of privacy protection. The smaller the $\epsilon$, the stronger the privacy protection, but the utility of the data decreases.&lt;/p>
&lt;p>Furthermore, $(\epsilon, \delta)$-differential privacy, a relaxed model that allows the privacy guarantee to be broken with a very small probability $\delta$, is also widely used.&lt;/p>
$$ \Pr[\mathcal{M}(D) \in S] \le e^\epsilon \Pr[\mathcal{M}(D') \in S] + \delta $$&lt;h4 id="laplace-mechanism">Laplace Mechanism
&lt;/h4>&lt;p>A typical method for achieving differential privacy is the &amp;ldquo;Laplace Mechanism,&amp;rdquo; which intentionally adds noise (random numbers) following a specific distribution to the true output result of a query. How much noise should be added depends on the &amp;ldquo;Global Sensitivity&amp;rdquo; $\Delta f$ of the function $f$.&lt;/p>
&lt;p>The global sensitivity $\Delta f$ is defined as the maximum change in the output of the function $f$ for any adjacent datasets $D, D'$.&lt;/p>
$$ \Delta f = \max_{D, D'} \| f(D) - f(D') \|_1 $$&lt;p>The Laplace mechanism adds noise $Y$ sampled from the Laplace distribution $\text{Lap}(b)$ with scale parameter $b = \frac{\Delta f}{\epsilon}$ to the result of the function $f(D)$.&lt;/p>
$$ \mathcal{M}(D) = f(D) + Y, \quad Y \sim \text{Lap}\left(\frac{\Delta f}{\epsilon}\right) $$&lt;p>The probability density function of the Laplace distribution is as follows:&lt;/p>
$$ p(x \mid b) = \frac{1}{2b} \exp\left( - \frac{|x|}{b} \right) $$&lt;p>By this noise injection, it becomes impossible to infer whether a specific individual is included in the dataset from the output result. Companies leverage DP as a technology that masks individual data itself while maintaining the utility of statistical trends (mean, variance, counts, etc.) of the entire data.&lt;/p>
&lt;h3 id="23-federated-learning-fl">2.3 Federated Learning (FL)
&lt;/h3>&lt;p>Traditional machine learning took a centralized approach, where massive amounts of data were aggregated on a central server to train models, like the aforementioned data lakes. However, sending sensitive data such as medical images or smartphone input histories to a central server involves significant privacy risks.&lt;/p>
&lt;p>Therefore, &amp;ldquo;Federated Learning&amp;rdquo; was proposed by Google in 2016. In federated learning, rather than moving the data itself, the &amp;ldquo;computational processing of the model&amp;rdquo; is moved to the edge devices (smartphones, hospital servers, etc.) where the data resides.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
Server[&amp;#34;Central Aggregation Server&amp;#34;]
Device1[&amp;#34;Edge Device 1 (Smartphone)&amp;#34;]
Device2[&amp;#34;Edge Device 2 (Smartphone)&amp;#34;]
Device3[&amp;#34;Edge Device 3 (Smartphone)&amp;#34;]
Server --&amp;gt;|&amp;#34;1. Broadcast Global Model Weights&amp;#34;| Device1
Server --&amp;gt;|&amp;#34;1. Broadcast Global Model Weights&amp;#34;| Device2
Server --&amp;gt;|&amp;#34;1. Broadcast Global Model Weights&amp;#34;| Device3
Device1 --&amp;gt;|&amp;#34;2. Local Training on Private Data&amp;#34;| Device1
Device2 --&amp;gt;|&amp;#34;2. Local Training on Private Data&amp;#34;| Device2
Device3 --&amp;gt;|&amp;#34;2. Local Training on Private Data&amp;#34;| Device3
Device1 --&amp;gt;|&amp;#34;3. Transmit Model Gradients/Updates&amp;#34;| Server
Device2 --&amp;gt;|&amp;#34;3. Transmit Model Gradients/Updates&amp;#34;| Server
Device3 --&amp;gt;|&amp;#34;3. Transmit Model Gradients/Updates&amp;#34;| Server
Server --&amp;gt;|&amp;#34;4. Aggregation (FedAvg)&amp;#34;| Server
Server --&amp;gt;|&amp;#34;5. Update Global Model&amp;#34;| Server
&lt;/pre>
&lt;h4 id="federated-averaging-fedavg-algorithm">Federated Averaging (FedAvg) Algorithm
&lt;/h4>&lt;p>A representative aggregation algorithm in federated learning is FedAvg. Each client $k$ performs several epochs of local training using Stochastic Gradient Descent (SGD) on their own dataset $D_k$ (of size $n_k$) to calculate the updated weights $w_{t+1}^k$.&lt;/p>
&lt;p>The central server receives the weights from the $K$ participating clients and updates the global model weights $w_{t+1}$ by taking a weighted average of these weights according to the data size. Letting the total number of data samples be $n = \sum_{k=1}^K n_k$, the update equation is as follows:&lt;/p>
$$ w_{t+1} = \sum_{k=1}^K \frac{n_k}{n} w_{t+1}^k $$&lt;p>This makes it possible to build intelligent AI models without an individual&amp;rsquo;s raw data (message history, photos, etc.) ever leaving the device. Typical applications include improving the next-word prediction feature of Google Keyboard (Gboard) and Apple&amp;rsquo;s FaceID and Hey Siri voice recognition models.&lt;/p>
&lt;h3 id="24-homomorphic-encryption-he">2.4 Homomorphic Encryption (HE)
&lt;/h3>&lt;p>&amp;ldquo;Homomorphic Encryption&amp;rdquo; is a &amp;ldquo;magical&amp;rdquo; cryptographic technology that allows computations (such as addition and multiplication) to be performed on data while it remains in an encrypted state. With normal encryption methods, when performing computations on data, it must first be decrypted (returned to plaintext), but decrypting on a cloud server creates a security vulnerability.&lt;/p>
&lt;p>By using homomorphic encryption, the following properties are achieved. Letting the encryption function be $E(\cdot)$, the addition and multiplication of plaintexts $m_1$ and $m_2$ become possible with operations ($\oplus$ and $\otimes$) directly on the ciphertext.&lt;/p>
$$ E(m_1 + m_2) = E(m_1) \oplus E(m_2) $$$$ E(m_1 \times m_2) = E(m_1) \otimes E(m_2) $$&lt;p>Homomorphic encryption is divided into &amp;ldquo;Partially Homomorphic Encryption (PHE),&amp;rdquo; which allows either addition or multiplication, and &amp;ldquo;Fully Homomorphic Encryption (FHE),&amp;rdquo; which allows both addition and multiplication an unlimited number of times. Since Craig Gentry constructed the first FHE scheme using lattice-based cryptography in 2009, it has been a major breakthrough in cryptography.&lt;/p>
&lt;p>Currently, challenges such as computational cost and increased ciphertext size (overhead) remain, but it is expected to be applied to the secure analysis of medical data on the cloud and secure multi-party computation among financial institutions.&lt;/p>
&lt;h2 id="3-trends-in-legal-regulations-and-compliance-gdpr-vs-ccpa">3. Trends in Legal Regulations and Compliance: GDPR vs. CCPA
&lt;/h2>&lt;p>In parallel with technological evolution, the development of legal frameworks is advancing rapidly worldwide. When companies utilize big data, complying with these legal regulations is a strict requirement. Let&amp;rsquo;s compare the two most influential regulatory frameworks.&lt;/p>
&lt;h3 id="eu-general-data-protection-regulation-gdpr">EU General Data Protection Regulation (GDPR)
&lt;/h3>&lt;p>Enforced in May 2018, the EU&amp;rsquo;s GDPR (General Data Protection Regulation) is recognized as the global &amp;ldquo;gold standard&amp;rdquo; for personal data protection. GDPR applies to all organizations that handle the data of individuals within the EU, and violations result in massive fines of either up to 4% of global annual turnover or 20 million euros, whichever is higher.&lt;/p>
&lt;p>&lt;strong>Key Features of GDPR:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Opt-in Principle&lt;/strong>: Explicit and freely given prior consent from users is required for data collection and processing.&lt;/li>
&lt;li>&lt;strong>Right to be Forgotten / Right to Erasure&lt;/strong>: Users have the right to request companies to completely erase their personal data. Data must also be deleted from data lake backups, which is an extremely difficult technical requirement.&lt;/li>
&lt;li>&lt;strong>Data Controllers and Data Processors&lt;/strong>: It strictly defines the responsibilities of those who determine the purposes of using the data (controllers) and those who process the data according to those instructions (processors).&lt;/li>
&lt;/ul>
&lt;h3 id="california-consumer-privacy-act-ccpacpra">California Consumer Privacy Act (CCPA/CPRA)
&lt;/h3>&lt;p>While there is no comprehensive privacy law at the federal level in the US, the CCPA (California Consumer Privacy Act) enacted in California in 2020 serves as the de facto national standard. It was later further strengthened by the CPRA (California Privacy Rights Act).&lt;/p>
&lt;p>&lt;strong>Key Features of CCPA:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Opt-out Principle&lt;/strong>: Unlike GDPR&amp;rsquo;s &amp;ldquo;prior consent,&amp;rdquo; data collection is possible without prior consent, but it is mandatory to provide users with a clear opt-out link stating &amp;ldquo;Do Not Sell My Personal Information.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Right to Access Data&lt;/strong>: Consumers can request the disclosure of specific pieces of information collected by the company, their categories, sources, and whether they have been sold to third parties.&lt;/li>
&lt;/ul>
&lt;p>These regulations strongly demand that companies adopt &amp;ldquo;Privacy by Design&amp;rdquo;—embedding privacy protection from the design stage of systems and processes.&lt;/p>
&lt;h2 id="4-implementation-challenges-in-the-data-ecosystem">4. Implementation Challenges in the Data Ecosystem
&lt;/h2>&lt;p>Let&amp;rsquo;s look at the implementation perspective when applying privacy-enhancing technologies and legal regulations to actual big data environments. For example, assume a case of implementing k-anonymization or differential privacy in a data lake using Python and Pandas, or PySpark.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Conceptual implementation of data aggregation applying differential privacy (Python)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">pandas&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">pd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">laplace_mechanism&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">true_value&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sensitivity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">epsilon&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Function to add Laplace noise to the true value
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">scale&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sensitivity&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">epsilon&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">noise&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">random&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">laplace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">loc&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">scale&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">scale&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">true_value&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">noise&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_dp_average_salary&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dataframe&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">epsilon&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">1.0&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> Calculate the average salary with guaranteed differential privacy
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Actual calculation&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">true_sum&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dataframe&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;salary&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sum&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">true_count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dataframe&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Application of differential privacy (based on sensitivity assumption)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Assume the fluctuation of the maximum salary as sensitivity (more strictly, clipping is necessary)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_salary_diff&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">100000&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Adding noise (DP can be applied to both the sum and the count)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">noisy_sum&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">laplace_mechanism&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">true_sum&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">max_salary_diff&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">epsilon&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">noisy_count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">laplace_mechanism&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">true_count&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">epsilon&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">noisy_sum&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">noisy_count&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Execution within the data pipeline&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># dp_avg_salary = get_dp_average_salary(raw_df, epsilon=0.5)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>As seen in this code snippet, the implementation of differential privacy itself is as simple as adding noise; however, in actual operations, managing the &amp;ldquo;privacy budget ($\epsilon$)&amp;rdquo; becomes extremely difficult. Issuing multiple queries to the same dataset consumes the privacy budget (based on the composition theorem), and ultimately it is necessary to build a mechanism (Privacy Budget Management) that locks the entire dataset or rejects queries.&lt;/p>
&lt;h2 id="5-future-outlook-and-ethical-issues">5. Future Outlook and Ethical Issues
&lt;/h2>&lt;p>The trade-off between big data and privacy is not a zero-sum game. With the evolution of PETs such as differential privacy, federated learning, and homomorphic encryption, a new data utilization paradigm of &amp;ldquo;sharing insights without sharing data&amp;rdquo; is becoming a reality.&lt;/p>
&lt;p>Furthermore, in recent years, connected with the concepts of &amp;ldquo;Data Mesh&amp;rdquo; and &amp;ldquo;Web3&amp;rdquo; (decentralized web), the movement to take back &amp;ldquo;Data Sovereignty&amp;rdquo; from giant platformers to individuals is accelerating. A future is being discussed where individual data is stored in Personal Data Stores (PDS) or data wallets, and users themselves control the licensing and monetization of their data.&lt;/p>
&lt;p>However, technological solutions are not perfect. In federated learning, there is a threat of &amp;ldquo;Poisoning Attacks,&amp;rdquo; where malicious clients send fraudulent model updates to corrupt the global model. In differential privacy, an ethical issue has also been pointed out where data of minorities is drowned out by noise, creating bias in AI models.&lt;/p>
&lt;h2 id="conclusion">Conclusion
&lt;/h2>&lt;p>The fate of personal information in the era of big data poses a fundamental question that goes beyond a mere technical issue: what kind of society do we desire? How can we protect individual dignity and privacy while enjoying convenience? We can only arrive at a sustainable solution through a trinity: the establishment of legal regulations, the continuous innovation of privacy-enhancing technologies, and the high literacy of each of us who provide the data. Privacy and convenience are no longer a trade-off, but will evolve into &amp;ldquo;essential requirements&amp;rdquo; that can be achieved simultaneously through the latest technologies.&lt;/p></description></item></channel></rss>