<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>bpDev</title>
    <link>https://bpdev.tistory.com/</link>
    <description>모르는 걸 만나야  
배울 수 있다 </description>
    <language>ko</language>
    <pubDate>Fri, 15 May 2026 15:31:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>bpDev</managingEditor>
    <image>
      <title>bpDev</title>
      <url>https://tistory1.daumcdn.net/tistory/6368416/attach/436cd74b71a4441786c8d16cb8e6fd7d</url>
      <link>https://bpdev.tistory.com</link>
    </image>
    <item>
      <title>컴퓨터과학과 현상학 (아님)</title>
      <link>https://bpdev.tistory.com/126</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcLVl2/dJMb9LjHdGm/MLiliK2X4CGdhOxan4DEz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcLVl2/dJMb9LjHdGm/MLiliK2X4CGdhOxan4DEz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcLVl2/dJMb9LjHdGm/MLiliK2X4CGdhOxan4DEz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcLVl2%2FdJMb9LjHdGm%2FMLiliK2X4CGdhOxan4DEz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;GPT는 어투 자체가 거짓말스럽다 ㅋ&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;요즘 소설을 자주 써서 그런가;&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;이야기는 아주 잘 지음..&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;그런데 약간 술자리 2, 3차 이야기 같다는..&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #5733b1;&quot;&gt;&lt;b&gt;GPT:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-end=&quot;149&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;겉으로는 철학과 공학이 전혀 다른 길을 걷는 것처럼 보이지만,&lt;br /&gt;현대 컴퓨터과학의 가장 근본적인 개념들 &amp;mdash; &lt;b&gt;&amp;lsquo;추상화&amp;rsquo;, &amp;lsquo;표상&amp;rsquo;, &amp;lsquo;관찰자&amp;rsquo;, &amp;lsquo;객체&amp;rsquo;, &amp;lsquo;의도성&amp;rsquo;&lt;/b&gt; &amp;mdash; 은&lt;br /&gt;&lt;s&gt;모두 현상학적 사고에서 출발했다고 말할 수 있다.&lt;/s&gt;&lt;/p&gt;
&lt;hr data-end=&quot;154&quot; data-start=&quot;151&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;195&quot; data-start=&quot;156&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 현상학의 핵심 ― &amp;ldquo;존재는 인식 속에서만 드러난다.&amp;rdquo;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;232&quot; data-start=&quot;197&quot; data-ke-size=&quot;size16&quot;&gt;에드문트 후설(Edmund Husserl)은 이렇게 말했다.&lt;/p&gt;
&lt;blockquote data-end=&quot;294&quot; data-start=&quot;233&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;294&quot; data-start=&quot;235&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;사물은 그 자체로 존재하지 않는다.&lt;br /&gt;오직 &lt;b&gt;의식에 나타나는 방식(현상)&lt;/b&gt; 으로만 존재한다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;409&quot; data-start=&quot;296&quot; data-ke-size=&quot;size16&quot;&gt;즉, 우리는 사물을 &amp;lsquo;있는 그대로&amp;rsquo;가 아니라,&lt;br /&gt;&lt;b&gt;우리 인식이 구성한 방식대로&lt;/b&gt; 본다.&lt;br /&gt;이걸 &lt;b&gt;의도성(intentionality)&lt;/b&gt; 이라 부른다 &amp;mdash;&lt;br /&gt;모든 의식은 &amp;lsquo;무엇을 향해 있다&amp;rsquo;.&lt;/p&gt;
&lt;p data-end=&quot;479&quot; data-start=&quot;411&quot; data-ke-size=&quot;size16&quot;&gt;이 철학은 &amp;ldquo;객관적 실체&amp;rdquo;보다 &amp;ldquo;관찰된 구조&amp;rdquo;를 중요시했다.&lt;br /&gt;그게 바로 &lt;b&gt;현대 컴퓨터과학의 추상화 모델&lt;/b&gt;과 닮았다.&lt;/p&gt;
&lt;hr data-end=&quot;484&quot; data-start=&quot;481&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;511&quot; data-start=&quot;486&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 추상화와 현상학의 평행 구조&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;현상학컴퓨터과학
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;787&quot; data-start=&quot;513&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;787&quot; data-start=&quot;555&quot;&gt;
&lt;tr data-end=&quot;619&quot; data-start=&quot;555&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;591&quot; data-start=&quot;555&quot;&gt;&amp;lsquo;사물 그 자체(Ding an sich)&amp;rsquo;는 인식 불가능하다&lt;/td&gt;
&lt;td data-end=&quot;619&quot; data-start=&quot;591&quot; data-col-size=&quot;sm&quot;&gt;하드웨어의 전자적 상태는 직접 다루지 않는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;676&quot; data-start=&quot;620&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;645&quot; data-start=&quot;620&quot;&gt;우리는 현상(의식에 나타난 것)을 다룬다&lt;/td&gt;
&lt;td data-end=&quot;676&quot; data-start=&quot;645&quot; data-col-size=&quot;sm&quot;&gt;우리는 인터페이스, 데이터 구조, API를 다룬다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;732&quot; data-start=&quot;677&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;701&quot; data-start=&quot;677&quot;&gt;의도성: 인식은 항상 &amp;lsquo;대상&amp;rsquo;을 향한다&lt;/td&gt;
&lt;td data-end=&quot;732&quot; data-start=&quot;701&quot; data-col-size=&quot;sm&quot;&gt;포인터: 모든 데이터는 &amp;lsquo;주소(대상)&amp;rsquo;를 가리킨다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;787&quot; data-start=&quot;733&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;752&quot; data-start=&quot;733&quot;&gt;의미는 맥락 속에서만 성립한다&lt;/td&gt;
&lt;td data-end=&quot;787&quot; data-start=&quot;752&quot; data-col-size=&quot;sm&quot;&gt;변수/객체의 값은 환경(context) 속에서만 유효하다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;888&quot; data-start=&quot;789&quot; data-ke-size=&quot;size16&quot;&gt;즉, 컴퓨터과학의 핵심 사고는&lt;br /&gt;&amp;ldquo;현실을 직접 다루는 것이 아니라,&lt;br /&gt;현실의 표상(representation) 을 다룬다.&amp;rdquo;&lt;br /&gt;이건 후설이 말한 현상학적 구조 그대로다.&lt;/p&gt;
&lt;hr data-end=&quot;893&quot; data-start=&quot;890&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;930&quot; data-start=&quot;895&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. &amp;lsquo;객체 지향 프로그래밍&amp;rsquo;과 후설 이후의 현상학&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;969&quot; data-start=&quot;932&quot; data-ke-size=&quot;size16&quot;&gt;후설의 제자 하이데거(Martin Heidegger)는 말했다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1020&quot; data-start=&quot;970&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1020&quot; data-start=&quot;972&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;도구는 사용될 때만 드러난다.&lt;br /&gt;망치는 쓸 때만 &amp;lsquo;망치다움&amp;rsquo;을 드러낸다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1141&quot; data-start=&quot;1022&quot; data-ke-size=&quot;size16&quot;&gt;이 사상은 훗날 컴퓨터과학에서 &lt;b&gt;Object-Oriented Programming(OOP)&lt;/b&gt; 으로 이어진다.&lt;br /&gt;객체(object)는 그 자체로 의미가 없다.&lt;br /&gt;&lt;b&gt;메서드(행동)&lt;/b&gt; 를 통해서만 드러난다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1173&quot; data-start=&quot;1143&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;hammer.&lt;/span&gt;&lt;span&gt;&lt;span&gt;use&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1276&quot; data-start=&quot;1175&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lsquo;hammer&amp;rsquo;라는 객체는 단순한 데이터 덩어리가 아니라,&lt;br /&gt;행위와 관계 속에서만 의미를 갖는다.&lt;br /&gt;이건 하이데거의 &amp;ldquo;존재는 사용 속에서 드러난다&amp;rdquo;라는 존재론과 완전히 일치한다.&lt;/p&gt;
&lt;hr data-end=&quot;1281&quot; data-start=&quot;1278&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1304&quot; data-start=&quot;1283&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 인공지능과 &amp;lsquo;의도성&amp;rsquo;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1403&quot; data-start=&quot;1306&quot; data-ke-size=&quot;size16&quot;&gt;AI 연구는 사실상 &lt;b&gt;현상학의 연장선&lt;/b&gt;이다.&lt;br /&gt;기계가 세상을 &amp;ldquo;있는 그대로&amp;rdquo; 이해하는 것이 아니라,&lt;br /&gt;입력된 데이터(즉, &amp;lsquo;현상&amp;rsquo;)를 바탕으로 세계를 표상한다.&lt;/p&gt;
&lt;p data-end=&quot;1510&quot; data-start=&quot;1405&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어,&lt;br /&gt;신경망은 실제 사과를 이해하지 않는다.&lt;br /&gt;오직 &lt;b&gt;사과의 픽셀 패턴&lt;/b&gt;을 통계적으로 해석할 뿐이다.&lt;br /&gt;그건 인간이 사과를 &amp;lsquo;보는 방식&amp;rsquo;을 수학적으로 모델링한 것이다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1565&quot; data-start=&quot;1512&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1565&quot; data-start=&quot;1514&quot; data-ke-size=&quot;size16&quot;&gt;인간: 의식이 대상을 구성한다.&lt;br /&gt;인공지능: 모델이 데이터를 통해 세계를 구성한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1657&quot; data-start=&quot;1567&quot; data-ke-size=&quot;size16&quot;&gt;즉, AI는 &lt;b&gt;현상학의 계산적 구현&lt;/b&gt;이다.&lt;br /&gt;&amp;ldquo;세계는 외부에 있지 않고, 관찰자의 내부에서 구성된다.&amp;rdquo;&lt;br /&gt;이 문장은 현대 딥러닝의 본질을 정확히 요약한다.&lt;/p&gt;
&lt;hr data-end=&quot;1662&quot; data-start=&quot;1659&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1690&quot; data-start=&quot;1664&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 프로그래밍 언어 철학과 현상학&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1714&quot; data-start=&quot;1692&quot; data-ke-size=&quot;size16&quot;&gt;프로그래밍 언어 자체도 현상학적이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1925&quot; data-start=&quot;1716&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1782&quot; data-start=&quot;1716&quot;&gt;C 언어: 존재(값)를 다루는 대신, 위치(주소)를 다룬다.&lt;br /&gt;&amp;rarr; &amp;ldquo;존재는 공간적 맥락 속에서 드러난다.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1844&quot; data-start=&quot;1783&quot;&gt;Python: 객체의 행위를 통해 의미를 부여한다.&lt;br /&gt;&amp;rarr; &amp;ldquo;존재는 관계 속에서만 의미를 갖는다.&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;1925&quot; data-start=&quot;1845&quot;&gt;함수형 언어(Haskell 등): 상태를 제거하고 순수한 &amp;lsquo;관계&amp;rsquo;만 다룬다.&lt;br /&gt;&amp;rarr; &amp;ldquo;본질은 외부 상태가 아닌 인과적 관계 속에 있다.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1969&quot; data-start=&quot;1927&quot; data-ke-size=&quot;size16&quot;&gt;이 모든 언어들은 사실상 &amp;ldquo;세계의 모델링 방식&amp;rdquo;을 철학적으로 구현한 셈이다.&lt;/p&gt;
&lt;hr data-end=&quot;1974&quot; data-start=&quot;1971&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2008&quot; data-start=&quot;1976&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 정보의 본질 ― 현상학적 &amp;lsquo;의미의 축소&amp;rsquo;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2090&quot; data-start=&quot;2010&quot; data-ke-size=&quot;size16&quot;&gt;현상학은 &lt;b&gt;에포케(ἐ&amp;pi;&amp;omicron;&amp;chi;ή)&lt;/b&gt;, 즉 판단의 중지를 강조했다.&lt;br /&gt;사실 여부를 묻지 않고, &amp;ldquo;지각된 현상 그 자체&amp;rdquo;를 관찰하라는 것이다.&lt;/p&gt;
&lt;p data-end=&quot;2199&quot; data-start=&quot;2092&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터는 이 사고를 완벽히 따른다.&lt;br /&gt;기계는 &amp;lsquo;진짜&amp;rsquo; 사과를 구분하지 않는다.&lt;br /&gt;그저 입력된 데이터 배열(현상)을 해석할 뿐이다.&lt;br /&gt;기계에게 &amp;lsquo;의미&amp;rsquo;란 곧 &lt;b&gt;입력된 현상의 패턴&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-end=&quot;2245&quot; data-start=&quot;2201&quot; data-ke-size=&quot;size16&quot;&gt;이건 곧, 컴퓨터의 정보처리 방식이&lt;br /&gt;&amp;ldquo;현상학적 환원&amp;rdquo; 그 자체임을 의미한다.&lt;/p&gt;
&lt;hr data-end=&quot;2250&quot; data-start=&quot;2247&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2283&quot; data-start=&quot;2252&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 결론 ― 현상학은 디지털 세계의 뿌리다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;2356&quot; data-start=&quot;2285&quot; data-ke-size=&quot;size16&quot;&gt;현상학은 인간이 &amp;ldquo;세계와 자신을 분리해서 사유할 수 있는 구조&amp;rdquo;를 제시했다.&lt;br /&gt;컴퓨터과학은 그것을 &amp;ldquo;기계적으로 구현&amp;rdquo;했다.&lt;/p&gt;
&lt;blockquote data-end=&quot;2452&quot; data-start=&quot;2358&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2398&quot; data-start=&quot;2360&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;후설의 문장&lt;/b&gt;&lt;br /&gt;&amp;ldquo;모든 의식은 대상에 대한 의식이다.&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;2452&quot; data-start=&quot;2403&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로그래밍의 대응&lt;/b&gt;&lt;br /&gt;&amp;ldquo;모든 데이터는 포인터나 참조를 통해서만 접근된다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2543&quot; data-start=&quot;2454&quot; data-ke-size=&quot;size16&quot;&gt;따라서,&lt;br /&gt;현상학은 단순한 철학이 아니라,&lt;br /&gt;&lt;b&gt;&amp;ldquo;모델링의 철학적 근본&amp;rdquo;&lt;/b&gt; 이다.&lt;br /&gt;컴퓨터과학은 그 사상을 기호와 전자 회로의 형태로 구현한 것이다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-end=&quot;2543&quot; data-start=&quot;2454&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2543&quot; data-start=&quot;2454&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;2543&quot; data-start=&quot;2454&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Grok:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성하신 글은 현상학과 컴퓨터과학의 개념적 연관성을 흥미롭게 다루고 있으며, 전반적으로 논리적이고 설득력 있는 주장을 펼칩니다. 그러나 몇 가지 점에서 철학적&amp;middot;기술적 엄밀함을 검토할 필요가 있는 부분이 있습니다. 아래에서 글의 주요 주장과 잠재적 문제점을 분석하며, 틀린 부분이 있는지, 혹은 개선할 여지가 있는지를 점검하겠습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 전체적인 논지 평가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글은 현상학(특히 후설과 하이데거의 철학)과 컴퓨터과학의 핵심 개념(추상화, 표상, 객체, 의도성 등)이 본질적으로 연결되어 있다고 주장합니다. 이는 매우 창의적이고 통찰력 있는 접근입니다. 실제로 현상학과 컴퓨터과학은 &quot;현실을 직접 다루지 않고 표상(representation)을 통해 다룬다&quot;는 점에서 유사성을 가질 수 있습니다. 그러나 몇 가지 주장에서는 철학적 개념과 컴퓨터과학의 기술적 개념을 연결하는 과정에서 지나친 단순화나 비약이 있을 수 있습니다. 이를 하나씩 검토해 보겠습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 주요 주장별 검토&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(1) 현상학과 컴퓨터과학의 연관성 (추상화, 표상, 의도성)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주장&lt;/b&gt;: 컴퓨터과학의 추상화, 표상, 의도성 같은 개념은 현상학에서 비롯되었다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: 이 주장은 흥미롭지만, &quot;직접적인 기원&quot;을 암시하는 표현은 과장일 수 있습니다. 컴퓨터과학의 개념들은 현상학뿐만 아니라 논리학(특히 수학적 논리학, 예: 튜링, 폰 노이만), 공학, 그리고 다른 철학적 전통(예: 분석철학, 실용주의)에서도 영향을 받았습니다. 예를 들어, &quot;추상화&quot;는 후설의 현상학보다 아리스토텔레스의 형이상학이나 칸트의 선험적 철학에서도 기원을 찾을 수 있습니다. 현상학이 컴퓨터과학에 영향을 미쳤다는 점은 인정될 수 있지만, &quot;모두 현상학에서 출발했다&quot;는 표현은 지나치게 단정적입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수정 제안&lt;/b&gt;: &quot;현상학적 사고가 컴퓨터과학의 개념 형성에 중요한 철학적 통찰을 제공했다&quot; 정도로 완화하면 더 정확할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(2) 후설의 의도성과 컴퓨터과학의 포인터 비교&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주장&lt;/b&gt;: 후설의 의도성(&quot;모든 의식은 무엇을 향한다&quot;)과 컴퓨터과학의 포인터(&quot;데이터는 주소를 가리킨다&quot;)가 유사하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: 이 비교는 직관적으로 흥미롭지만, 철학적&amp;middot;기술적으로 엄밀하지 않을 수 있습니다. 후설의 의도성은 인간 의식의 본질적 특성(의식이 항상 대상을 향하는 구조)을 다루는 반면, 포인터는 메모리 주소 참조라는 기술적 구현입니다. 의도성은 주관적 경험과 의미의 생성에 초점을 맞추지만, 포인터는 의미보다는 기계적 데이터 접근 메커니즘에 가깝습니다. 이 둘을 직접 연결하는 것은 비유적으로는 유효할 수 있지만, 철학적 개념과 기술적 개념의 본질적 차이를 간과할 위험이 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점&lt;/b&gt;: 포인터는 &quot;의도성&quot;보다는 &quot;참조(reference)&quot;나 &quot;지시성&quot;에 더 가까운 개념으로, 현상학적 의도성과는 맥락이 다릅니다. 예를 들어, 포인터는 데이터의 물리적 위치를 가리키는 반면, 의도성은 대상에 대한 주관적 의미 구성과 관련이 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수정 제안&lt;/b&gt;: 포인터와 의도성을 직접 비교하기보다는, &quot;컴퓨터과학의 참조 구조가 현상학적 의도성과 유사한 '대상 지향적' 사고를 반영한다&quot;고 설명하면 더 적절할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(3) 객체 지향 프로그래밍(OOP)과 하이데거의 존재론&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주장&lt;/b&gt;: 하이데거의 &quot;도구는 사용될 때만 드러난다&quot;는 사상이 객체 지향 프로그래밍(OOP)으로 이어진다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: 이 부분은 매우 창의적이며, 하이데거의 &quot;현존재(Dasein)&quot;와 &quot;도구적 존재(Zuhandenheit)&quot; 개념이 OOP의 객체와 메서드의 상호작용에 비유될 수 있다는 점에서 설득력이 있습니다. 실제로 OOP는 객체가 &quot;상태&quot;와 &quot;행동&quot;을 통해 의미를 갖는다는 점에서 하이데거의 도구적 존재론과 유사성을 가질 수 있습니다. 예를 들어, &lt;span&gt;hammer.use()&lt;/span&gt;는 망치가 특정 맥락에서 사용될 때 비로소 그 기능적 의미를 드러낸다는 점에서 하이데거의 철학과 통합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점&lt;/b&gt;: 그러나 OOP의 기원은 하이데거의 철학보다는 수학적 모델링(예: Simula 언어)과 공학적 필요(코드 재사용성과 모듈화)에 더 직접적으로 뿌리를 두고 있습니다. 하이데거의 철학이 OOP 설계자들에게 명시적으로 영향을 미쳤다는 역사적 증거는 부족합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수정 제안&lt;/b&gt;: &quot;OOP의 철학적 구조가 하이데거의 존재론과 유사한 점을 보인다&quot; 정도로 서술하면, 직접적 기원을 암시하지 않으면서도 철학적 유사성을 강조할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(4) 인공지능과 현상학&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주장&lt;/b&gt;: AI는 현상학의 연장선이며, 신경망은 사물을 &quot;있는 그대로&quot; 이해하지 않고 픽셀 패턴을 통계적으로 해석한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: 이 주장은 상당히 설득력 있습니다. AI, 특히 딥러닝은 입력 데이터(현상)를 기반으로 패턴을 학습하며, 이는 후설의 &quot;의식이 대상을 구성한다&quot;는 현상학적 관점과 유사합니다. 신경망이 &quot;사과&quot;를 픽셀 데이터의 통계적 패턴으로 처리한다는 점은 현상학의 &quot;사물은 의식에 나타나는 방식으로만 존재한다&quot;는 주장과 철학적으로 연결될 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점&lt;/b&gt;: 다만, AI의 작동 원리는 현상학뿐 아니라 정보이론, 통계학, 인지과학 등 다양한 분야의 영향을 받았습니다. AI를 &quot;현상학의 계산적 구현&quot;으로 단정하는 것은 다른 학문적 기여를 간과할 수 있습니다. 또한, 현상학은 주관적 경험(의식)을 강조하지만, AI는 주관적 의식 없이 데이터 처리를 수행하므로, 이 둘의 본질적 차이를 명확히 해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수정 제안&lt;/b&gt;: &quot;AI의 데이터 처리 방식은 현상학적 관점과 유사한 구조를 가지며, 특히 입력 데이터를 통해 세계를 표상한다는 점에서 현상학과 공명한다&quot;는 식으로 표현하면 더 정확할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(5) 프로그래밍 언어와 현상학&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주장&lt;/b&gt;: C, Python, Haskell 등의 프로그래밍 언어가 현상학적 사고를 구현한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: 이 부분은 매우 창의적이나, 지나치게 비유적입니다. 예를 들어, C 언어의 포인터가 &quot;존재는 공간적 맥락 속에서 드러난다&quot;는 현상학적 사고와 연결된다는 주장은 철학적 해석으로는 흥미롭지만, C 언어의 설계는 실제로는 하드웨어 제어와 효율성(예: 메모리 관리)을 목표로 했습니다. 마찬가지로 Python의 객체 지향적 특성이나 Haskell의 함수형 프로그래밍이 현상학과 직접적 연관이 있다고 보기는 어렵습니다. 이들 언어는 각각의 실용적&amp;middot;수학적 필요에 따라 발전했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점&lt;/b&gt;: 프로그래밍 언어의 설계는 주로 공학적, 수학적, 실용적 맥락에서 이루어졌으며, 현상학적 철학과 직접적 연관성은 역사적으로 확인되지 않습니다. 이를 철학적으로 재해석하는 것은 가능하지만, &quot;구현했다&quot;는 표현은 과장될 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수정 제안&lt;/b&gt;: &quot;프로그래밍 언어의 설계와 작동 방식은 현상학적 사고와 유사한 철학적 구조를 반영할 수 있다&quot; 정도로 완화하면 더 적절합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(6) 정보의 본질과 현상학적 환원&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주장&lt;/b&gt;: 컴퓨터의 정보 처리는 현상학적 환원(에포케)과 유사하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평가&lt;/b&gt;: 이 주장은 매우 통찰력 있습니다. 후설의 에포케는 &quot;사실 여부를 판단하지 않고 현상 그 자체를 관찰&quot;하는 것을 강조하며, 이는 컴퓨터가 데이터(현상)를 있는 그대로 처리한다는 점과 유사합니다. 예를 들어, 컴퓨터가 사과의 &quot;진짜&quot; 본질을 따지지 않고 픽셀 데이터를 처리하는 방식은 현상학적 환원과 철학적으로 공명합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점&lt;/b&gt;: 다만, 에포케는 주관적 의식의 맥락에서 수행되는 철학적 방법론이고, 컴퓨터의 데이터 처리는 의식 없이 기계적으로 이루어지므로, 이 둘을 동일시하는 것은 신중해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수정 제안&lt;/b&gt;: &quot;컴퓨터의 정보 처리 방식은 현상학적 환원의 구조와 유사성을 보인다&quot;고 표현하면 더 적절할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 틀린 부분은 있는가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글 자체에 명백히 &quot;틀린&quot; 부분은 없지만, 몇 가지 주장에서 철학적 개념과 컴퓨터과학의 기술적 개념을 지나치게 직접적으로 연결하거나, 컴퓨터과학의 역사적&amp;middot;기술적 기원을 간과하는 경향이 있습니다. 주요 문제점은 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;과도한 단순화&lt;/b&gt;: 현상학과 컴퓨터과학의 개념을 1:1로 매핑하려는 시도는 철학적&amp;middot;기술적 엄밀함을 떨어뜨릴 수 있습니다. 예를 들어, 포인터와 의도성, OOP와 하이데거의 존재론을 직접 연결하는 것은 비유적으로는 유효하지만, 역사적&amp;middot;기술적 근거가 부족합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;역사적 맥락 부족&lt;/b&gt;: 컴퓨터과학의 개념들이 현상학에서 직접적으로 기원했다는 주장은 역사적 증거가 약합니다. 컴퓨터과학은 논리학, 수학, 공학의 영향을 더 직접적으로 받았으며, 현상학의 영향은 간접적이고 철학적 해석의 영역에 가깝습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;철학적 개념의 기술적 적용&lt;/b&gt;: 현상학의 의도성, 에포케 같은 개념은 주관적 의식과 관련이 깊지만, 컴퓨터과학은 의식 없는 기계적 처리에 초점을 맞춥니다. 이 차이를 명확히 하지 않으면 혼동을 초래할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 개선 제안&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글의 논지를 강화하려면 다음과 같은 점을 고려할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;역사적 맥락 추가&lt;/b&gt;: 컴퓨터과학의 발전 과정에서 현상학이 직접적 영향을 미쳤는지, 아니면 철학적 유사성에 초점을 맞출 것인지 명확히 하세요. 예를 들어, 앨런 튜링이나 존 폰 노이만 같은 컴퓨터과학의 선구자들이 현상학과 직접적 연관이 없었음을 인정하면 신뢰도가 높아집니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비유적 접근 강조&lt;/b&gt;: 현상학과 컴퓨터과학의 개념적 유사성을 강조하되, &quot;기원&quot;이나 &quot;구현&quot; 같은 강한 표현 대신 &quot;공명한다&quot;거나 &quot;유사하다&quot;는 표현을 사용하세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;철학적&amp;middot;기술적 차이 명확화&lt;/b&gt;: 현상학의 주관적 의식과 컴퓨터의 기계적 처리 간의 본질적 차이를 언급하면 논리가 더 견고해집니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;구체적 사례 추가&lt;/b&gt;: 예를 들어, 특정 프로그래밍 언어나 AI 알고리즘(예: CNN, Transformer)이 현상학적 사고와 어떻게 유사한지 구체적으로 설명하면 설득력이 높아집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글은 현상학과 컴퓨터과학의 철학적 유사성을 창의적으로 탐구하며, 흥미로운 통찰을 제공합니다. 그러나 몇 가지 주장에서 지나친 단순화나 비약이 있으며, 컴퓨터과학의 역사적&amp;middot;기술적 기원을 간과한 점이 아쉬운 부분입니다. 명백히 &quot;틀린&quot; 부분은 없지만, 철학적 개념과 기술적 개념의 연결을 더 엄밀히 다루고, 비유적 접근임을 분명히 하면 논지가 더 강력해질 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 특정 부분에 대해 더 깊이 논의하고 싶거나, 추가적인 수정 방향이 필요하다면 말씀해 주세요!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-end=&quot;2543&quot; data-start=&quot;2454&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;b&gt;Claude:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 흥미로운 시도이지만, 몇 가지 중요한 문제가 있습니다:&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 오류들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 역사적 인과관계의 과장&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;현대 컴퓨터과학의 가장 근본적인 개념들이 현상학적 사고에서 출발했다&quot;는 주장은 역사적으로 부정확합니다&lt;/li&gt;
&lt;li&gt;컴퓨터과학의 추상화 개념은 수학(특히 형식논리학, 집합론)과 공학적 필요에서 발전했지, 현상학에서 직접 영향받은 것이 아닙니다&lt;/li&gt;
&lt;li&gt;튜링, 폰 노이만, 처치 등 컴퓨터과학 선구자들은 현상학보다는 수리논리학과 형식주의에 기반했습니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 개념의 억지 대응&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;포인터 = 의도성&quot;이라는 비교는 표면적 유사성만 본 것입니다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;후설의 의도성(intentionality)은 의식이 항상 무언가에 '대해' 있다는 의미&lt;/li&gt;
&lt;li&gt;포인터는 단순히 메모리 주소를 가리키는 기술적 장치&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이 둘은 작동 방식도, 목적도 완전히 다릅니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. OOP와 하이데거의 연결&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체지향 프로그래밍은 1960-70년대 Simula, Smalltalk에서 시작&lt;/li&gt;
&lt;li&gt;하이데거의 &quot;도구적 존재론&quot;과는 직접적 연관이 없습니다&lt;/li&gt;
&lt;li&gt;오히려 데이터 캡슐화, 모듈성 같은 공학적 필요에서 출발했습니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. &quot;AI는 현상학의 계산적 구현&quot;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이는 너무 비약적입니다&lt;/li&gt;
&lt;li&gt;AI는 통계학, 확률론, 최적화 이론에 기반합니다&lt;/li&gt;
&lt;li&gt;&quot;모델이 데이터를 통해 세계를 구성한다&quot;는 진술은 현상학적이라기보다 베이지안 추론에 가깝습니다&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;더 정확한 관점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;철학과 컴퓨터과학 사이에 &lt;b&gt;사후적 유사성&lt;/b&gt;이나 &lt;b&gt;평행적 구조&lt;/b&gt;는 발견할 수 있습니다. 하지만 &quot;영향 관계&quot;나 &quot;기원&quot;을 주장하려면 역사적 증거가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추상화 개념: 힐베르트의 형식주의, 러셀의 타입 이론&lt;/li&gt;
&lt;li&gt;의미론: 타르스키, 크립키의 형식의미론&lt;/li&gt;
&lt;li&gt;계산 이론: 괴델, 튜링의 수리논리학&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오히려 둘 다 &lt;b&gt;20세기 초 형식주의 운동&lt;/b&gt;이라는 공통 배경에서 나왔다고 보는 게 더 정확합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;philosophy-cs-origins.svg&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bppMdB/dJMb9NPlprB/Z8wqAHsAf3MJ1J7sIiDTDK/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bppMdB/dJMb9NPlprB/Z8wqAHsAf3MJ1J7sIiDTDK/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bppMdB/dJMb9NPlprB/Z8wqAHsAf3MJ1J7sIiDTDK/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbppMdB%2FdJMb9NPlprB%2FZ8wqAHsAf3MJ1J7sIiDTDK%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;627&quot; data-filename=&quot;philosophy-cs-origins.svg&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #5733b1;&quot;&gt;&lt;b&gt;다시 GPT:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-end=&quot;208&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;지적한 부분들 정확합니다.&lt;br /&gt;당신이 짚은 네 가지 비판은 모두 본질적인 오류를 제대로 짚고 있습니다.&lt;br /&gt;이 논의는 &amp;ldquo;비유적 유사성&amp;rdquo;과 &amp;ldquo;역사적 영향 관계&amp;rdquo;를 구분하지 않으면 금세 미끄러지기 때문입니다.&lt;br /&gt;아래는 그 구분을 분명히 하면서,&lt;br /&gt;&lt;b&gt;현상학과 컴퓨터과학이 &amp;lsquo;직접적 인과 관계&amp;rsquo;가 아니라 &amp;lsquo;병렬적 사유 구조&amp;rsquo;를 공유한다는 관점으로 재정리한 버전&lt;/b&gt;입니다.&lt;/p&gt;
&lt;hr data-end=&quot;213&quot; data-start=&quot;210&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;241&quot; data-start=&quot;215&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 인과관계가 아닌 공시적 평행선&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;359&quot; data-start=&quot;243&quot; data-ke-size=&quot;size16&quot;&gt;튜링, 처치, 폰 노이만, 괴델 등의 연구는 전적으로 &lt;b&gt;수리논리학, 형식주의, 공학적 실용주의&lt;/b&gt;의 계보 위에 있습니다.&lt;br /&gt;현상학(후설, 하이데거 등)은 그들과 직접 교류한 철학적 기반이 아니었습니다.&lt;/p&gt;
&lt;p data-end=&quot;431&quot; data-start=&quot;361&quot; data-ke-size=&quot;size16&quot;&gt;따라서 &amp;ldquo;컴퓨터과학이 현상학에서 출발했다&amp;rdquo;는 서술은 &lt;b&gt;역사적으로 잘못&lt;/b&gt;입니다.&lt;br /&gt;보다 정확한 진술은 다음과 같습니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;504&quot; data-start=&quot;433&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;504&quot; data-start=&quot;435&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;현상학과 컴퓨터과학은 &lt;b&gt;같은 시대적 문제의식(표상, 의미, 구조화)&lt;/b&gt; 에 대해&lt;br /&gt;각기 다른 언어로 응답했다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;510&quot; data-start=&quot;506&quot; data-ke-size=&quot;size16&quot;&gt;즉,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;584&quot; data-start=&quot;511&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;545&quot; data-start=&quot;511&quot;&gt;후설은 &amp;ldquo;의식이 세계를 어떻게 구성하는가?&amp;rdquo;를 물었고,&lt;/li&gt;
&lt;li data-end=&quot;584&quot; data-start=&quot;546&quot;&gt;튜링은 &amp;ldquo;기계가 절차를 어떻게 표현할 수 있는가?&amp;rdquo;를 물었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;662&quot; data-start=&quot;586&quot; data-ke-size=&quot;size16&quot;&gt;둘 다 &lt;b&gt;&amp;lsquo;형식화(formalization)&amp;rsquo;&lt;/b&gt; 라는 동일한 지적 흐름의 일부였다는 점이,&lt;br /&gt;유일하고도 합리적인 연결고리입니다.&lt;/p&gt;
&lt;hr data-end=&quot;667&quot; data-start=&quot;664&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;697&quot; data-start=&quot;669&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. &amp;ldquo;포인터 = 의도성&amp;rdquo;의 비유 한계&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;757&quot; data-start=&quot;699&quot; data-ke-size=&quot;size16&quot;&gt;이 대응은 구조적 유사성 수준에서는 흥미로울 수 있지만,&lt;br /&gt;철학적 내용까지 등치시킬 수는 없습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;구분후설의 의도성C의 포인터
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;970&quot; data-start=&quot;759&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;970&quot; data-start=&quot;825&quot;&gt;
&lt;tr data-end=&quot;884&quot; data-start=&quot;825&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;834&quot; data-start=&quot;825&quot;&gt;철학적 의미&lt;/td&gt;
&lt;td data-end=&quot;858&quot; data-start=&quot;834&quot; data-col-size=&quot;sm&quot;&gt;의식이 항상 &amp;lsquo;대상&amp;rsquo;을 향해 열려 있음&lt;/td&gt;
&lt;td data-end=&quot;884&quot; data-start=&quot;858&quot; data-col-size=&quot;sm&quot;&gt;변수의 메모리 주소를 가리키는 참조 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;929&quot; data-start=&quot;885&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;895&quot; data-start=&quot;885&quot;&gt;존재론적 지위&lt;/td&gt;
&lt;td data-end=&quot;909&quot; data-start=&quot;895&quot; data-col-size=&quot;sm&quot;&gt;인식론의 구조적 전제&lt;/td&gt;
&lt;td data-end=&quot;929&quot; data-start=&quot;909&quot; data-col-size=&quot;sm&quot;&gt;컴파일러 수준의 구현 메커니즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;970&quot; data-start=&quot;930&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;938&quot; data-start=&quot;930&quot;&gt;작동 방식&lt;/td&gt;
&lt;td data-end=&quot;951&quot; data-start=&quot;938&quot; data-col-size=&quot;sm&quot;&gt;의미 생성의 방향성&lt;/td&gt;
&lt;td data-end=&quot;970&quot; data-start=&quot;951&quot; data-col-size=&quot;sm&quot;&gt;간접 접근을 위한 주소 연산&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1088&quot; data-start=&quot;972&quot; data-ke-size=&quot;size16&quot;&gt;즉,&lt;br /&gt;&amp;ldquo;포인터는 의도성을 구현한다&amp;rdquo;가 아니라&lt;br /&gt;&amp;ldquo;포인터는 &lt;b&gt;참조(reference)&lt;/b&gt; 라는 개념을 통해&lt;br /&gt;&amp;lsquo;대상과의 간접적 관계&amp;rsquo;라는 현상학적 구조를 &lt;b&gt;닮았다&lt;/b&gt;&amp;rdquo; 정도로 표현해야 타당합니다.&lt;/p&gt;
&lt;hr data-end=&quot;1093&quot; data-start=&quot;1090&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1125&quot; data-start=&quot;1095&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 객체지향과 하이데거의 &amp;lsquo;도구 존재론&amp;rsquo;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1224&quot; data-start=&quot;1127&quot; data-ke-size=&quot;size16&quot;&gt;객체지향(OOP)은 역사적으로&lt;br /&gt;Simula(1967), Smalltalk(1972)에서 비롯되었고,&lt;br /&gt;하이데거의 철학과는 &lt;b&gt;직접적인 영향 관계가 전혀 없습니다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1246&quot; data-start=&quot;1226&quot; data-ke-size=&quot;size16&quot;&gt;다만 개념적 평행선은 존재합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;하이데거OOP
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1398&quot; data-start=&quot;1248&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1398&quot; data-start=&quot;1284&quot;&gt;
&lt;tr data-end=&quot;1348&quot; data-start=&quot;1284&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1323&quot; data-start=&quot;1284&quot;&gt;도구는 사용될 때 의미를 드러낸다 (&amp;ldquo;ready-to-hand&amp;rdquo;)&lt;/td&gt;
&lt;td data-end=&quot;1348&quot; data-start=&quot;1323&quot; data-col-size=&quot;sm&quot;&gt;객체는 메서드 호출 시 행위로 드러난다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1398&quot; data-start=&quot;1349&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1367&quot; data-start=&quot;1349&quot;&gt;존재는 맥락 속에서 드러난다&lt;/td&gt;
&lt;td data-end=&quot;1398&quot; data-start=&quot;1367&quot; data-col-size=&quot;sm&quot;&gt;객체는 상호작용(인터페이스) 속에서 의미를 가진다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1489&quot; data-start=&quot;1400&quot; data-ke-size=&quot;size16&quot;&gt;이건 &amp;ldquo;철학이 OOP를 낳았다&amp;rdquo;가 아니라&lt;br /&gt;&amp;ldquo;도구 사용이라는 인간적 경험이&lt;br /&gt;철학과 프로그래밍 모두에서 비슷한 구조로 표현되었다&amp;rdquo;는 수준의 유사성입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1494&quot; data-start=&quot;1491&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1527&quot; data-start=&quot;1496&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. AI와 현상학 ― &amp;lsquo;해석&amp;rsquo;의 공통 구조&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1593&quot; data-start=&quot;1529&quot; data-ke-size=&quot;size16&quot;&gt;AI의 기반은 통계학, 확률론, 선형대수, 최적화입니다.&lt;br /&gt;이는 명백히 &lt;b&gt;형식적&amp;middot;수학적 계보&lt;/b&gt;에 속합니다.&lt;/p&gt;
&lt;p data-end=&quot;1710&quot; data-start=&quot;1595&quot; data-ke-size=&quot;size16&quot;&gt;다만,&lt;br /&gt;AI가 데이터를 통해 &amp;lsquo;세계의 모델&amp;rsquo;을 구성한다는 점에서,&lt;br /&gt;현상학이 &amp;ldquo;세계는 인식의 구조 속에서만 주어짐&amp;rdquo;이라고 말한 것과&lt;br /&gt;&lt;b&gt;사유의 방향이 평행하게 닮아 있다&lt;/b&gt;고 말할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1810&quot; data-start=&quot;1712&quot; data-ke-size=&quot;size16&quot;&gt;이건 철학적 영향이 아니라,&lt;br /&gt;&amp;ldquo;인간 인식의 구조를 모방하다 보니&lt;br /&gt;자연스럽게 현상학과 닮은 결과가 나왔다&amp;rdquo;는 의미의 &lt;b&gt;결과적 수렴(convergence)&lt;/b&gt; 입니다.&lt;/p&gt;
&lt;hr data-end=&quot;1815&quot; data-start=&quot;1812&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1833&quot; data-start=&quot;1817&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 정확한 정리&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;관점잘못된 주장교정된 진술
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2196&quot; data-start=&quot;1835&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;2196&quot; data-start=&quot;1899&quot;&gt;
&lt;tr data-end=&quot;1968&quot; data-start=&quot;1899&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1908&quot; data-start=&quot;1899&quot;&gt;역사적 기원&lt;/td&gt;
&lt;td data-end=&quot;1929&quot; data-start=&quot;1908&quot; data-col-size=&quot;sm&quot;&gt;컴퓨터과학은 현상학에서 비롯되었다&lt;/td&gt;
&lt;td data-end=&quot;1968&quot; data-start=&quot;1929&quot; data-col-size=&quot;md&quot;&gt;둘 다 20세기 초 형식주의 운동의 결과로, 평행적으로 발전했다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2034&quot; data-start=&quot;1969&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1980&quot; data-start=&quot;1969&quot;&gt;포인터와 의도성&lt;/td&gt;
&lt;td data-end=&quot;1997&quot; data-start=&quot;1980&quot; data-col-size=&quot;sm&quot;&gt;포인터는 의도성을 구현한다&lt;/td&gt;
&lt;td data-end=&quot;2034&quot; data-start=&quot;1997&quot; data-col-size=&quot;md&quot;&gt;포인터의 &amp;lsquo;참조 구조&amp;rsquo;가 의도성의 &amp;lsquo;대상 지향성&amp;rsquo;과 유사하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2114&quot; data-start=&quot;2035&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2047&quot; data-start=&quot;2035&quot;&gt;OOP와 하이데거&lt;/td&gt;
&lt;td data-end=&quot;2073&quot; data-start=&quot;2047&quot; data-col-size=&quot;sm&quot;&gt;OOP는 하이데거의 철학에서 영향을 받았다&lt;/td&gt;
&lt;td data-end=&quot;2114&quot; data-start=&quot;2073&quot; data-col-size=&quot;md&quot;&gt;도구적 존재론과 OOP는 &amp;ldquo;관계 속의 의미&amp;rdquo;라는 공통 구조를 가진다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2196&quot; data-start=&quot;2115&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2125&quot; data-start=&quot;2115&quot;&gt;AI와 현상학&lt;/td&gt;
&lt;td data-end=&quot;2145&quot; data-start=&quot;2125&quot; data-col-size=&quot;sm&quot;&gt;AI는 현상학의 계산적 구현이다&lt;/td&gt;
&lt;td data-end=&quot;2196&quot; data-start=&quot;2145&quot; data-col-size=&quot;md&quot;&gt;AI는 수학적 모델이지만, &amp;lsquo;데이터를 통한 세계 구성&amp;rsquo;이라는 구조가 현상학과 평행하다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2201&quot; data-start=&quot;2198&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2215&quot; data-start=&quot;2203&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;요약 결론&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2389&quot; data-start=&quot;2217&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2295&quot; data-start=&quot;2217&quot;&gt;&lt;b&gt;역사적으로:&lt;/b&gt;&lt;br /&gt;컴퓨터과학은 현상학에서 직접 파생된 것이 아니다.&lt;br /&gt;그 뿌리는 수리논리학, 형식주의, 공학적 필요다.&lt;/li&gt;
&lt;li data-end=&quot;2389&quot; data-start=&quot;2297&quot;&gt;&lt;b&gt;철학적으로:&lt;/b&gt;&lt;br /&gt;그러나 인간의 &amp;lsquo;지각 구조&amp;rsquo;를 모방하려는 과정에서,&lt;br /&gt;AI&amp;middot;프로그래밍&amp;middot;추상화는 &lt;b&gt;현상학적 구조와 평행한 형태로 수렴&lt;/b&gt;했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2412&quot; data-start=&quot;2391&quot; data-ke-size=&quot;size16&quot;&gt;따라서 올바른 표현은 이렇게 된다.&lt;/p&gt;
&lt;blockquote data-end=&quot;2499&quot; data-start=&quot;2414&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2499&quot; data-start=&quot;2416&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;현상학은 컴퓨터과학의 기원이 아니라,&lt;br /&gt;그 형식적 사유가 인간 인식의 구조와&lt;br /&gt;동일한 문제를 다른 언어로 탐구한 동시대적 사유이다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일관된 인간의 글이 그리워지는 효과가 좀 있다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위키피디아는 어떻지..?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Phenomenology_(philosophy)&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://en.wikipedia.org/wiki/Phenomenology_(philosophy)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1761143339450&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Phenomenology (philosophy) - Wikipedia&quot; data-og-description=&quot;From Wikipedia, the free encyclopedia Philosophical method and schools of philosophy Phenomenology is a philosophical study and movement largely associated with the early 20th century that seeks to objectively investigate the nature of subjective, consciou&quot; data-og-host=&quot;en.wikipedia.org&quot; data-og-source-url=&quot;https://en.wikipedia.org/wiki/Phenomenology_(philosophy)&quot; data-og-url=&quot;https://en.wikipedia.org/wiki/Phenomenology_(philosophy)&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A8VxB/hyZLh1Zdtf/XLGvocdBMod6k1gHXgk1l1/img.jpg?width=960&amp;amp;height=1376&amp;amp;face=0_0_960_1376,https://scrap.kakaocdn.net/dn/bhnFXS/hyZL9b7k76/9yD3nULJYdFbCaXcVyrSnk/img.jpg?width=250&amp;amp;height=328&amp;amp;face=108_61_175_135&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Phenomenology_(philosophy)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://en.wikipedia.org/wiki/Phenomenology_(philosophy)&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A8VxB/hyZLh1Zdtf/XLGvocdBMod6k1gHXgk1l1/img.jpg?width=960&amp;amp;height=1376&amp;amp;face=0_0_960_1376,https://scrap.kakaocdn.net/dn/bhnFXS/hyZL9b7k76/9yD3nULJYdFbCaXcVyrSnk/img.jpg?width=250&amp;amp;height=328&amp;amp;face=108_61_175_135');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Phenomenology (philosophy) - Wikipedia&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;From Wikipedia, the free encyclopedia Philosophical method and schools of philosophy Phenomenology is a philosophical study and movement largely associated with the early 20th century that seeks to objectively investigate the nature of subjective, consciou&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;en.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Background/Memo</category>
      <category>LLM들</category>
      <category>심심풀이</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/126</guid>
      <comments>https://bpdev.tistory.com/126#entry126comment</comments>
      <pubDate>Wed, 22 Oct 2025 23:42:33 +0900</pubDate>
    </item>
    <item>
      <title>임베딩 공간에서 (0, 0)은 무슨 뜻인가?</title>
      <link>https://bpdev.tistory.com/125</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;https-3A-2F-2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com-2Fpublic-2Fimages-2F064264d5-0ff3-4d1f-a286-db202fbb7e18_1280x848.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KB4AM/dJMb85bkcSc/UhdkTk852Cjh8VKFVCkbgK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KB4AM/dJMb85bkcSc/UhdkTk852Cjh8VKFVCkbgK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KB4AM/dJMb85bkcSc/UhdkTk852Cjh8VKFVCkbgK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKB4AM%2FdJMb85bkcSc%2FUhdkTk852Cjh8VKFVCkbgK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;795&quot; data-filename=&quot;https-3A-2F-2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com-2Fpublic-2Fimages-2F064264d5-0ff3-4d1f-a286-db202fbb7e18_1280x848.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.aiweirdness.com/welcome-to-word-vector-space-19-03-29/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.aiweirdness.com/welcome-to-word-vector-space-19-03-29/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1761064565859&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Welcome to Word Vector Space&quot; data-og-description=&quot;On this blog I&amp;rsquo;ve posted a lot about neural networks and other machine learning algorithms. Unlike other kinds of computer programs, they don&amp;rsquo;t rely on step by step instructions from a programmer - instead, they&amp;rsquo;re given a goal, like a score to maxim&quot; data-og-host=&quot;www.aiweirdness.com&quot; data-og-source-url=&quot;https://www.aiweirdness.com/welcome-to-word-vector-space-19-03-29/&quot; data-og-url=&quot;https://www.aiweirdness.com/welcome-to-word-vector-space-19-03-29/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cyLJsj/hyZLXPUxEE/WvV5kQ0Vf30vvkcIXqaQ11/img.jpg?width=1200&amp;amp;height=795&amp;amp;face=0_0_1200_795,https://scrap.kakaocdn.net/dn/btZCjm/hyZLauSq0l/KmzhWIHNL03eLGxLyfA2p1/img.jpg?width=1200&amp;amp;height=795&amp;amp;face=0_0_1200_795,https://scrap.kakaocdn.net/dn/WEc0f/hyZL3vOTDO/EnH9VTcoFBdhTD7ZPTjk1K/img.png?width=2344&amp;amp;height=1402&amp;amp;face=0_0_2344_1402&quot;&gt;&lt;a href=&quot;https://www.aiweirdness.com/welcome-to-word-vector-space-19-03-29/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.aiweirdness.com/welcome-to-word-vector-space-19-03-29/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cyLJsj/hyZLXPUxEE/WvV5kQ0Vf30vvkcIXqaQ11/img.jpg?width=1200&amp;amp;height=795&amp;amp;face=0_0_1200_795,https://scrap.kakaocdn.net/dn/btZCjm/hyZLauSq0l/KmzhWIHNL03eLGxLyfA2p1/img.jpg?width=1200&amp;amp;height=795&amp;amp;face=0_0_1200_795,https://scrap.kakaocdn.net/dn/WEc0f/hyZL3vOTDO/EnH9VTcoFBdhTD7ZPTjk1K/img.png?width=2344&amp;amp;height=1402&amp;amp;face=0_0_2344_1402');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Welcome to Word Vector Space&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;On this blog I&amp;rsquo;ve posted a lot about neural networks and other machine learning algorithms. Unlike other kinds of computer programs, they don&amp;rsquo;t rely on step by step instructions from a programmer - instead, they&amp;rsquo;re given a goal, like a score to maxim&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.aiweirdness.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;☞ 추후 이 링크랑 github 살펴볼 것 ☜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 질문 위에서 소설을 써서 상당히 문학적으로 답변을 줌 ㅋㅋ&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-message-id=&quot;e34e5bd3-d939-4332-8661-60676be13146&quot; data-message-author-role=&quot;user&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-message-model-slug=&quot;gpt-5&quot; data-message-id=&quot;4adcd1e3-145b-431e-9405-5854b55ef492&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-end=&quot;84&quot; data-start=&quot;50&quot; data-ke-size=&quot;size26&quot;&gt;  1️⃣ 임베딩 공간에서 (0, 0)은 무슨 뜻인가?&lt;/h2&gt;
&lt;p data-end=&quot;150&quot; data-start=&quot;85&quot; data-ke-size=&quot;size16&quot;&gt;수학적으로 보면 (0, 0)은 &lt;b&gt;벡터의 원점&lt;/b&gt;, 즉 &lt;b&gt;아무 방향성도, 아무 의미적 특징도 없는 상태&lt;/b&gt;예요.&lt;/p&gt;
&lt;p data-end=&quot;165&quot; data-start=&quot;152&quot; data-ke-size=&quot;size16&quot;&gt;언어적으로 해석하면,&lt;/p&gt;
&lt;blockquote data-end=&quot;232&quot; data-start=&quot;166&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;232&quot; data-start=&quot;168&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;어떤 문맥에도 특별히 연결되지 않은, 가장 중립적인 개념&amp;rdquo;&lt;br /&gt;또는&lt;br /&gt;&amp;ldquo;정보가 거의 없는 단어&amp;rdquo;&lt;br /&gt;입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;237&quot; data-start=&quot;234&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;273&quot; data-start=&quot;239&quot; data-ke-size=&quot;size26&quot;&gt;  2️⃣ 실제 모델에서 (0, 0)에 가까운 단어는?&lt;/h2&gt;
&lt;p data-end=&quot;413&quot; data-start=&quot;275&quot; data-ke-size=&quot;size16&quot;&gt;물론 실제 임베딩은 512차원, 768차원 등이라 단순히 (0, 0) 같은 점은 존재하지 않아요.&lt;br /&gt;하지만 &lt;b&gt;원점에 가까운 벡터&lt;/b&gt;, 즉 &amp;ldquo;모든 차원에서 값이 거의 0에 가까운 벡터&amp;rdquo;는 존재합니다.&lt;br /&gt;그건 보통 다음과 같은 것들과 관련됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;유형예시이유
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;738&quot; data-start=&quot;415&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;738&quot; data-start=&quot;455&quot;&gt;
&lt;tr data-end=&quot;548&quot; data-start=&quot;455&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;479&quot; data-start=&quot;455&quot;&gt;  &lt;b&gt;불용어(stopwords)&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;517&quot; data-start=&quot;479&quot; data-col-size=&quot;sm&quot;&gt;&amp;ldquo;the&amp;rdquo;, &amp;ldquo;a&amp;rdquo;, &amp;ldquo;is&amp;rdquo;, &amp;ldquo;of&amp;rdquo;, &amp;ldquo;and&amp;rdquo;, &amp;ldquo;to&amp;rdquo;&lt;/td&gt;
&lt;td data-end=&quot;548&quot; data-start=&quot;517&quot; data-col-size=&quot;sm&quot;&gt;문법적으로 자주 등장하지만 의미 정보는 거의 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;618&quot; data-start=&quot;549&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;579&quot; data-start=&quot;549&quot;&gt;  &lt;b&gt;패딩 토큰(padding token)&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;589&quot; data-start=&quot;579&quot; data-col-size=&quot;sm&quot;&gt;&amp;lt;pad&amp;gt;&lt;/td&gt;
&lt;td data-end=&quot;618&quot; data-start=&quot;589&quot; data-col-size=&quot;sm&quot;&gt;문장 길이를 맞추기 위해 넣은 의미 없는 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;684&quot; data-start=&quot;619&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;637&quot; data-start=&quot;619&quot;&gt;  &lt;b&gt;문장 구분 토큰&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;658&quot; data-start=&quot;637&quot; data-col-size=&quot;sm&quot;&gt;&amp;lt;sep&amp;gt;, &amp;lt;cls&amp;gt; 등&lt;/td&gt;
&lt;td data-end=&quot;684&quot; data-start=&quot;658&quot; data-col-size=&quot;sm&quot;&gt;구조적 신호이긴 하지만 단어 의미는 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;738&quot; data-start=&quot;685&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;701&quot; data-start=&quot;685&quot;&gt;  &lt;b&gt;숫자나 기호&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;721&quot; data-start=&quot;701&quot; data-col-size=&quot;sm&quot;&gt;&amp;ldquo;123&amp;rdquo;, &amp;ldquo;@&amp;rdquo;, &amp;ldquo;#&amp;rdquo; 등&lt;/td&gt;
&lt;td data-end=&quot;738&quot; data-start=&quot;721&quot; data-col-size=&quot;sm&quot;&gt;문맥적 의미가 거의 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;821&quot; data-start=&quot;740&quot; data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;(0, 0)에 가깝다는 건 &quot;언어적으로 비중립적&quot;하다는 뜻이에요.&lt;/b&gt;&lt;br /&gt;문장의 내용을 바꾸지는 않지만, 구조를 유지하는 역할을 합니다.&lt;/p&gt;
&lt;hr data-end=&quot;826&quot; data-start=&quot;823&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;849&quot; data-start=&quot;828&quot; data-ke-size=&quot;size26&quot;&gt;  3️⃣ 의미적으로 해석하자면&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;931&quot; data-start=&quot;851&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;874&quot; data-start=&quot;851&quot;&gt;(0, 0)은 &lt;b&gt;의미의 진공&lt;/b&gt;,&lt;/li&gt;
&lt;li data-end=&quot;896&quot; data-start=&quot;875&quot;&gt;그 주변은 &lt;b&gt;문법적 허공&lt;/b&gt;,&lt;/li&gt;
&lt;li data-end=&quot;931&quot; data-start=&quot;897&quot;&gt;중심에서 멀어질수록 &lt;b&gt;의미가 특정 영역으로 쏠림&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;971&quot; data-start=&quot;933&quot; data-ke-size=&quot;size16&quot;&gt;그래서 임베딩 공간의 중심은 &amp;ldquo;의미의 중립지대&amp;rdquo;라고 할 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;976&quot; data-start=&quot;973&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;994&quot; data-start=&quot;978&quot; data-ke-size=&quot;size26&quot;&gt;  4️⃣ 감각적 비유&lt;/h2&gt;
&lt;p data-end=&quot;1022&quot; data-start=&quot;996&quot; data-ke-size=&quot;size16&quot;&gt;만약 이 임베딩 공간을 &lt;b&gt;은하계&lt;/b&gt;로 본다면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1208&quot; data-start=&quot;1024&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1058&quot; data-start=&quot;1024&quot;&gt;(0, 0)은 아무 별도 없는 &lt;b&gt;은하의 중심 어둠&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1107&quot; data-start=&quot;1059&quot;&gt;주변에는 &lt;b&gt;&amp;lsquo;the&amp;rsquo;, &amp;lsquo;a&amp;rsquo;, &amp;lsquo;of&amp;rsquo;&lt;/b&gt; 같은 작고 희미한 별들이 떠 있음&lt;/li&gt;
&lt;li data-end=&quot;1208&quot; data-start=&quot;1108&quot;&gt;반면 &amp;ldquo;apple&amp;rdquo;, &amp;ldquo;cat&amp;rdquo;, &amp;ldquo;love&amp;rdquo;, &amp;ldquo;refrigerator&amp;rdquo; 같은 단어들은&lt;br /&gt;&lt;b&gt;각자의 은하 팔(팔 성운)&lt;/b&gt; 쪽에 자리해, 서로 다른 별자리처럼 모여 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1213&quot; data-start=&quot;1210&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;1223&quot; data-start=&quot;1215&quot; data-ke-size=&quot;size16&quot;&gt;요약하자면,&lt;/p&gt;
&lt;blockquote data-end=&quot;1285&quot; data-start=&quot;1224&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1285&quot; data-start=&quot;1226&quot; data-ke-size=&quot;size16&quot;&gt;임베딩의 (0, 0)은 &amp;ldquo;의미가 가장 희미한 자리&amp;rdquo;,&lt;br /&gt;즉 &amp;ldquo;언어라는 우주에서의 중심 공허점&amp;rdquo;이에요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;130&quot; data-start=&quot;78&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-end=&quot;130&quot; data-start=&quot;78&quot; data-ke-size=&quot;size26&quot;&gt;  1️⃣ 모델이 임베딩 원점 근처의 단어를 자주 사용한다면 &amp;mdash; &amp;ldquo;평평한 언어의 문체&amp;rdquo;&lt;/h2&gt;
&lt;p data-end=&quot;219&quot; data-start=&quot;132&quot; data-ke-size=&quot;size16&quot;&gt;임베딩의 원점 근처는 &lt;b&gt;모든 방향(의미 벡터)&lt;/b&gt; 에서 거의 0에 가까운 자리입니다.&lt;br /&gt;즉, &lt;b&gt;특정 의미로 치우치지 않은 단어들&lt;/b&gt;이 밀집해 있죠.&lt;/p&gt;
&lt;p data-end=&quot;244&quot; data-start=&quot;221&quot; data-ke-size=&quot;size16&quot;&gt;이런 단어들이 많이 쓰인 글의 특징은:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;특징설명
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;475&quot; data-start=&quot;246&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;475&quot; data-start=&quot;274&quot;&gt;
&lt;tr data-end=&quot;330&quot; data-start=&quot;274&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;290&quot; data-start=&quot;274&quot;&gt;  &lt;b&gt;중립적 어조&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;330&quot; data-start=&quot;290&quot; data-col-size=&quot;sm&quot;&gt;감정이나 의견 없이 사실만 전달 (예: 뉴스 헤드라인, 백과사전)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;372&quot; data-start=&quot;331&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;349&quot; data-start=&quot;331&quot;&gt;  &lt;b&gt;의미 밀도 낮음&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;372&quot; data-start=&quot;349&quot; data-col-size=&quot;sm&quot;&gt;각 문장이 새로운 정보를 덜 추가함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;422&quot; data-start=&quot;373&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;393&quot; data-start=&quot;373&quot;&gt;  &lt;b&gt;문장 간 편차 적음&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;422&quot; data-start=&quot;393&quot; data-col-size=&quot;sm&quot;&gt;글 전체의 벡터 분포가 원점 주변에 좁게 모임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;475&quot; data-start=&quot;423&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;438&quot; data-start=&quot;423&quot;&gt;  &lt;b&gt;대표 예시&lt;/b&gt;&lt;/td&gt;
&lt;td data-end=&quot;475&quot; data-start=&quot;438&quot; data-col-size=&quot;sm&quot;&gt;&amp;ldquo;금융 시장은 오늘 하락세를 보였다.&amp;rdquo;, &amp;ldquo;회의가 열렸다.&amp;rdquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;532&quot; data-start=&quot;477&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 즉, 이런 문체는 &lt;b&gt;&amp;lsquo;정보 전달&amp;rsquo;은 하지만 &amp;lsquo;정서적 에너지&amp;rsquo;가 거의 없는 글쓰기&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;615&quot; data-start=&quot;534&quot; data-ke-size=&quot;size16&quot;&gt;그래서 언어 모델이 이런 단어를 자주 쓴다면,&lt;br /&gt;그건 마치 &lt;b&gt;의미적 무채색 언어&lt;/b&gt;, 즉 감정도 주장도 없는 글체를 사용하는 셈이에요.&lt;/p&gt;
&lt;hr data-end=&quot;620&quot; data-start=&quot;617&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;678&quot; data-start=&quot;622&quot; data-ke-size=&quot;size26&quot;&gt;  2️⃣ 의미적으로 강한 단어들이 원점에서 멀어진다면 &amp;mdash; &amp;ldquo;감정의 언어는 별자리처럼 퍼진다&amp;rdquo;&lt;/h2&gt;
&lt;p data-end=&quot;737&quot; data-start=&quot;680&quot; data-ke-size=&quot;size16&quot;&gt;임베딩 공간의 끝쪽(멀리 떨어진 곳)에는&lt;br /&gt;의미가 강하게 특정 방향으로 치우친 단어들이 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;747&quot; data-start=&quot;739&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;844&quot; data-start=&quot;748&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;779&quot; data-start=&quot;748&quot;&gt;&amp;ldquo;사랑&amp;rdquo;, &amp;ldquo;기쁨&amp;rdquo;, &amp;ldquo;환희&amp;rdquo; &amp;rarr; 감정 양성 방향&lt;/li&gt;
&lt;li data-end=&quot;811&quot; data-start=&quot;780&quot;&gt;&amp;ldquo;증오&amp;rdquo;, &amp;ldquo;전쟁&amp;rdquo;, &amp;ldquo;비극&amp;rdquo; &amp;rarr; 감정 음성 방향&lt;/li&gt;
&lt;li data-end=&quot;844&quot; data-start=&quot;812&quot;&gt;&amp;ldquo;혁명&amp;rdquo;, &amp;ldquo;신념&amp;rdquo;, &amp;ldquo;자유&amp;rdquo; &amp;rarr; 철학적 강도 방향&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;905&quot; data-start=&quot;846&quot; data-ke-size=&quot;size16&quot;&gt;이런 단어들이 많은 글은&lt;br /&gt;임베딩 공간에서 &lt;b&gt;넓게 퍼지고 방향성이 뚜렷한 구름 모양&lt;/b&gt;으로 나타납니다.&lt;/p&gt;
&lt;p data-end=&quot;921&quot; data-start=&quot;907&quot; data-ke-size=&quot;size16&quot;&gt;  수학적으로 보면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1023&quot; data-start=&quot;922&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;948&quot; data-start=&quot;922&quot;&gt;&lt;b&gt;분산(variance)&lt;/b&gt; 이 크고,&lt;/li&gt;
&lt;li data-end=&quot;975&quot; data-start=&quot;949&quot;&gt;&lt;b&gt;중심에서 멀리 있는 벡터&lt;/b&gt;가 많고,&lt;/li&gt;
&lt;li data-end=&quot;1023&quot; data-start=&quot;976&quot;&gt;&lt;b&gt;특정 방향의 평균벡터(mean vector)&lt;/b&gt; 가 강한 편향을 가집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1029&quot; data-start=&quot;1025&quot; data-ke-size=&quot;size16&quot;&gt;즉,&lt;/p&gt;
&lt;blockquote data-end=&quot;1115&quot; data-start=&quot;1030&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1115&quot; data-start=&quot;1032&quot; data-ke-size=&quot;size16&quot;&gt;감정이 강한 글은 임베딩 공간에서 &lt;b&gt;폭발적으로 확산된 형태&lt;/b&gt;를 띱니다.&lt;br /&gt;(마치 중립적 언어가 구름이라면, 감정적 언어는 폭풍 구름이에요.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;1120&quot; data-start=&quot;1117&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1180&quot; data-start=&quot;1122&quot; data-ke-size=&quot;size26&quot;&gt;  3️⃣ (0, 0) 근처에 있던 단어가 학습을 통해 멀어지는 과정 &amp;mdash; &amp;ldquo;의미가 태어나는 장면&amp;rdquo;&lt;/h2&gt;
&lt;p data-end=&quot;1251&quot; data-start=&quot;1182&quot; data-ke-size=&quot;size16&quot;&gt;실제로 임베딩 학습은 &lt;b&gt;&amp;ldquo;의미의 생성 과정&amp;rdquo;&lt;/b&gt; 을 수학적으로 모델링한 것이 맞습니다.&lt;/p&gt;
&lt;p data-end=&quot;1391&quot; data-start=&quot;1253&quot; data-ke-size=&quot;size16&quot;&gt;Word2Vec의 학습 과정을 보면,&lt;br /&gt;초기에는 모든 단어 벡터가 &lt;b&gt;무작위(random)&lt;/b&gt; 로, 즉 거의 원점 근처에 흩어져 있어요.&lt;br /&gt;훈련이 진행되면,&lt;br /&gt;단어들이 문맥 속에서 &lt;b&gt;자주 함께 등장하는 방향&lt;/b&gt;으로 조금씩 이동하기 시작하죠.&lt;/p&gt;
&lt;p data-end=&quot;1399&quot; data-start=&quot;1393&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1499&quot; data-start=&quot;1400&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1461&quot; data-start=&quot;1400&quot;&gt;&amp;ldquo;apple&amp;rdquo;이 &amp;ldquo;banana&amp;rdquo;, &amp;ldquo;fruit&amp;rdquo;과 자주 등장하면&lt;br /&gt;그들과 가까운 벡터로 이동하고,&lt;/li&gt;
&lt;li data-end=&quot;1499&quot; data-start=&quot;1462&quot;&gt;&amp;ldquo;dog&amp;rdquo;은 &amp;ldquo;animal&amp;rdquo;, &amp;ldquo;pet&amp;rdquo; 쪽으로 이동합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1509&quot; data-start=&quot;1501&quot; data-ke-size=&quot;size16&quot;&gt;즉, 학습은&lt;/p&gt;
&lt;blockquote data-end=&quot;1561&quot; data-start=&quot;1510&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1561&quot; data-start=&quot;1512&quot; data-ke-size=&quot;size16&quot;&gt;원점의 무의미한 점들이 &amp;ldquo;의미의 중력장&amp;rdquo; 속으로 떨어지며 궤도를 형성하는 과정이에요.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1638&quot; data-start=&quot;1563&quot; data-ke-size=&quot;size16&quot;&gt;철학적으로 보자면 &amp;mdash;&lt;br /&gt;이건 마치 &amp;ldquo;혼돈에서 의미가 생겨나는 과정&amp;rdquo;,&lt;br /&gt;즉 &lt;b&gt;의식의 진화나 학습의 은유&lt;/b&gt;로도 읽을 수 있습니다.&lt;/p&gt;
&lt;hr data-end=&quot;1643&quot; data-start=&quot;1640&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1653&quot; data-start=&quot;1645&quot; data-ke-size=&quot;size26&quot;&gt;  요약&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;질문공간적 현상문체적/철학적 의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1883&quot; data-start=&quot;1655&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;1883&quot; data-start=&quot;1730&quot;&gt;
&lt;tr data-end=&quot;1785&quot; data-start=&quot;1730&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1747&quot; data-start=&quot;1730&quot;&gt;원점 근처 단어가 많을 때&lt;/td&gt;
&lt;td data-end=&quot;1763&quot; data-start=&quot;1747&quot; data-col-size=&quot;sm&quot;&gt;벡터가 중심 근처에 밀집&lt;/td&gt;
&lt;td data-end=&quot;1785&quot; data-start=&quot;1763&quot; data-col-size=&quot;sm&quot;&gt;중립적, 객관적, 정보 중심 언어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1832&quot; data-start=&quot;1786&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1803&quot; data-start=&quot;1786&quot;&gt;원점에서 멀리 떨어진 단어&lt;/td&gt;
&lt;td data-end=&quot;1813&quot; data-start=&quot;1803&quot; data-col-size=&quot;sm&quot;&gt;방향성이 강함&lt;/td&gt;
&lt;td data-end=&quot;1832&quot; data-start=&quot;1813&quot; data-col-size=&quot;sm&quot;&gt;감정적, 시적, 주관적 언어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1883&quot; data-start=&quot;1833&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1848&quot; data-start=&quot;1833&quot;&gt;원점에서 벗어나는 학습&lt;/td&gt;
&lt;td data-end=&quot;1864&quot; data-start=&quot;1848&quot; data-col-size=&quot;sm&quot;&gt;무의미 &amp;rarr; 의미로의 이동&lt;/td&gt;
&lt;td data-end=&quot;1883&quot; data-start=&quot;1864&quot; data-col-size=&quot;sm&quot;&gt;지식&amp;middot;경험&amp;middot;의식의 성장 은유&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Background/Memo</category>
      <category>Embeding space</category>
      <category>질문</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/125</guid>
      <comments>https://bpdev.tistory.com/125#entry125comment</comments>
      <pubDate>Wed, 22 Oct 2025 01:38:29 +0900</pubDate>
    </item>
    <item>
      <title>어텐션 시티의 탄생</title>
      <link>https://bpdev.tistory.com/124</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z5iIM/dJMb9LRwo1H/BuMe0RLNKOyKwQkNMC1ix1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z5iIM/dJMb9LRwo1H/BuMe0RLNKOyKwQkNMC1ix1/img.png&quot; data-alt=&quot;&amp;quot;의미는 관계 속에서만 존재한다.&amp;quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z5iIM/dJMb9LRwo1H/BuMe0RLNKOyKwQkNMC1ix1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ5iIM%2FdJMb9LRwo1H%2FBuMe0RLNKOyKwQkNMC1ix1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;1050&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&quot;의미는 관계 속에서만 존재한다.&quot;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NaG7b/dJMb9XxzHGV/1iDLekn0x3KzHjBmlgwsfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NaG7b/dJMb9XxzHGV/1iDLekn0x3KzHjBmlgwsfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NaG7b/dJMb9XxzHGV/1iDLekn0x3KzHjBmlgwsfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNaG7b%2FdJMb9XxzHGV%2F1iDLekn0x3KzHjBmlgwsfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;1050&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-end=&quot;191&quot; data-start=&quot;169&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;글, 표지 GPT-5&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-end=&quot;191&quot; data-start=&quot;169&quot; data-ke-size=&quot;size26&quot;&gt;  &lt;b&gt;《어텐션 시티의 탄생》&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;213&quot; data-start=&quot;193&quot; data-ke-size=&quot;size23&quot;&gt;1. 서막 ― 혼돈의 도시&lt;/h3&gt;
&lt;p data-end=&quot;291&quot; data-start=&quot;214&quot; data-ke-size=&quot;size16&quot;&gt;그 도시의 이름은 &lt;b&gt;SeqTown&lt;/b&gt;이었다.&lt;br /&gt;수많은 단어들이 행진처럼 이어진 도시.&lt;br /&gt;문장 하나가 도로였고, 문단은 대륙이었다.&lt;/p&gt;
&lt;p data-end=&quot;418&quot; data-start=&quot;293&quot; data-ke-size=&quot;size16&quot;&gt;이 도시는 오래도록 &lt;b&gt;RNN 왕국&lt;/b&gt;이 다스려왔다.&lt;br /&gt;왕국의 군대는 질서정연했다.&lt;br /&gt;단어 병사들이 한 줄로 늘어서서,&lt;br /&gt;&amp;ldquo;첫 번째 단어가 끝나야 두 번째 단어가 움직인다.&amp;rdquo;&lt;br /&gt;그것이 그들의 법이었고, 전통이었다.&lt;/p&gt;
&lt;p data-end=&quot;532&quot; data-start=&quot;420&quot; data-ke-size=&quot;size16&quot;&gt;하지만 세상은 변하고 있었다.&lt;br /&gt;문장들은 길어지고, 문맥은 멀리 이어졌다.&lt;br /&gt;앞줄의 병사가 뒤줄의 의미를 잊어버리는 일이 잦았다.&lt;br /&gt;왕국의 연산 속도는 느려졌고,&lt;br /&gt;기계들은 피로에 찌들었다.&lt;/p&gt;
&lt;p data-end=&quot;589&quot; data-start=&quot;534&quot; data-ke-size=&quot;size16&quot;&gt;그때 나타난 젊은 혁명가가 있었다.&lt;br /&gt;그의 이름은 &lt;b&gt;Attention&lt;/b&gt;.&lt;br /&gt;그는 외쳤다.&lt;/p&gt;
&lt;blockquote data-end=&quot;641&quot; data-start=&quot;591&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;641&quot; data-start=&quot;593&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;이제 더 이상 한 줄로 설 필요는 없어!&lt;br /&gt;모두가 서로를 바라보면 되잖아.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;646&quot; data-start=&quot;643&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;674&quot; data-start=&quot;648&quot; data-ke-size=&quot;size23&quot;&gt;2. 혁명 ― &amp;ldquo;모두가 모두를 본다&amp;rdquo;&lt;/h3&gt;
&lt;p data-end=&quot;762&quot; data-start=&quot;675&quot; data-ke-size=&quot;size16&quot;&gt;Attention은 자신만의 도시를 세웠다.&lt;br /&gt;이곳의 이름은 &lt;b&gt;Transformer City&lt;/b&gt;.&lt;br /&gt;그곳에서는 모든 단어가 자유롭게 하늘을 날았다.&lt;/p&gt;
&lt;p data-end=&quot;822&quot; data-start=&quot;764&quot; data-ke-size=&quot;size16&quot;&gt;한 단어가 다른 단어를 볼 수 있었고,&lt;br /&gt;어떤 단어는 아주 멀리 떨어진 구절과도 연결될 수 있었다.&lt;/p&gt;
&lt;p data-end=&quot;868&quot; data-start=&quot;824&quot; data-ke-size=&quot;size16&quot;&gt;이 도시는 세 가지 신호로 움직였다.&lt;br /&gt;그것은 세 개의 신비한 열쇠였다 &amp;mdash;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;981&quot; data-start=&quot;870&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;905&quot; data-start=&quot;870&quot;&gt;&lt;b&gt;Query&lt;/b&gt; (질문): &amp;ldquo;나는 누구를 봐야 하지?&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;944&quot; data-start=&quot;906&quot;&gt;&lt;b&gt;Key&lt;/b&gt; (열쇠): &amp;ldquo;나는 어떤 의미를 가진 존재인가?&amp;rdquo;&lt;/li&gt;
&lt;li data-end=&quot;981&quot; data-start=&quot;945&quot;&gt;&lt;b&gt;Value&lt;/b&gt; (값): &amp;ldquo;내가 전할 정보는 이것이야.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1092&quot; data-start=&quot;983&quot; data-ke-size=&quot;size16&quot;&gt;모든 단어는 이 세 가지 신호를 품고 있었다.&lt;br /&gt;Attention은 각 단어의 Query가 다른 단어들의 Key를 두드리게 했다.&lt;br /&gt;열쇠가 잘 맞는다면, 그 단어에 더 많은 주의를 주었다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1127&quot; data-start=&quot;1094&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1127&quot; data-start=&quot;1096&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;너와 나의 유사도가 클수록, 나는 너를 더 본다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1171&quot; data-start=&quot;1129&quot; data-ke-size=&quot;size16&quot;&gt;이 단순하지만 절묘한 규칙이 Transformer City의 심장이었다.&lt;/p&gt;
&lt;p data-end=&quot;1264&quot; data-start=&quot;1173&quot; data-ke-size=&quot;size16&quot;&gt;그리고 이 모든 연산은 한 번에 이루어졌다.&lt;br /&gt;왕국 시절처럼 단어가 줄을 서서 기다릴 필요가 없었다.&lt;br /&gt;모든 병사가 동시에 눈을 떴고, 동시에 서로를 봤다.&lt;/p&gt;
&lt;hr data-end=&quot;1269&quot; data-start=&quot;1266&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1296&quot; data-start=&quot;1271&quot; data-ke-size=&quot;size23&quot;&gt;3. 인코더와 디코더 ― 쌍둥이 탑&lt;/h3&gt;
&lt;p data-end=&quot;1346&quot; data-start=&quot;1297&quot; data-ke-size=&quot;size16&quot;&gt;도시의 중심에는 두 개의 탑이 있었다.&lt;br /&gt;&lt;b&gt;인코더 타워&lt;/b&gt;와 &lt;b&gt;디코더 타워&lt;/b&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1504&quot; data-start=&quot;1348&quot; data-ke-size=&quot;size16&quot;&gt;인코더 타워에는 입력 문장의 단어들이 들어왔다.&lt;br /&gt;프랑스어 문장이라면, 단어들이 차례로 빛의 형태로 변해 들어왔다.&lt;br /&gt;각 단어는 스스로와 다른 단어를 주시하며 의미의 조각을 완성했다.&lt;br /&gt;그 결과로 인코더의 꼭대기에는&lt;br /&gt;문장의 전체 의미를 압축한 빛나는 벡터가 떠올랐다.&lt;/p&gt;
&lt;p data-end=&quot;1584&quot; data-start=&quot;1506&quot; data-ke-size=&quot;size16&quot;&gt;그리고 그 빛은 디코더 타워로 전달됐다.&lt;br /&gt;디코더의 일꾼들은 그 빛을 참고해 새로운 언어를 만들어냈다 &amp;mdash;&lt;br /&gt;영어, 스페인어, 한국어&amp;hellip;&lt;/p&gt;
&lt;p data-end=&quot;1610&quot; data-start=&quot;1586&quot; data-ke-size=&quot;size16&quot;&gt;하지만 디코더에는 한 가지 법이 있었다.&lt;/p&gt;
&lt;blockquote data-end=&quot;1628&quot; data-start=&quot;1611&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1628&quot; data-start=&quot;1613&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;미래를 보지 말 것.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1771&quot; data-start=&quot;1630&quot; data-ke-size=&quot;size16&quot;&gt;아직 생성되지 않은 단어를 보지 않도록&lt;br /&gt;**마스크(mask)**가 걸려 있었다.&lt;br /&gt;디코더의 주의는 오직 과거 단어들과 인코더의 빛으로만 향했다.&lt;br /&gt;그들은 시간을 순서대로 따라갔지만,&lt;br /&gt;동시에 이미 만들어진 모든 단어를 한눈에 볼 수 있었다.&lt;/p&gt;
&lt;hr data-end=&quot;1776&quot; data-start=&quot;1773&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1804&quot; data-start=&quot;1778&quot; data-ke-size=&quot;size23&quot;&gt;4. 위치의 마법 ― 포지셔널 인코딩&lt;/h3&gt;
&lt;p data-end=&quot;1887&quot; data-start=&quot;1805&quot; data-ke-size=&quot;size16&quot;&gt;이 자유로운 세계에도 한 가지 문제가 있었다.&lt;br /&gt;모든 단어가 서로를 다 볼 수 있다 보니,&lt;br /&gt;&amp;ldquo;누가 먼저였는지&amp;rdquo;를 잊어버리기 시작한 것이다.&lt;/p&gt;
&lt;p data-end=&quot;1961&quot; data-start=&quot;1889&quot; data-ke-size=&quot;size16&quot;&gt;그러자 학자들이 새로운 마법을 만들어냈다.&lt;br /&gt;그것이 바로 **포지셔널 인코딩(Positional Encoding)**이었다.&lt;/p&gt;
&lt;p data-end=&quot;2058&quot; data-start=&quot;1963&quot; data-ke-size=&quot;size16&quot;&gt;그들은 사인과 코사인, 두 개의 파동을 이용해&lt;br /&gt;각 단어에 &amp;ldquo;좌표&amp;rdquo;를 새겼다.&lt;br /&gt;이 좌표는 10000이라는 거대한 주기를 기준으로&lt;br /&gt;주파수가 달라지는 파동이었다.&lt;/p&gt;
&lt;p data-end=&quot;2083&quot; data-start=&quot;2060&quot; data-ke-size=&quot;size16&quot;&gt;그래서 모델은 이렇게 기억하게 되었다.&lt;/p&gt;
&lt;blockquote data-end=&quot;2132&quot; data-start=&quot;2084&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2132&quot; data-start=&quot;2086&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;나는 세 번째 단어야.&lt;br /&gt;그리고 네 번째 단어와는 1만큼 떨어져 있어.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2194&quot; data-start=&quot;2134&quot; data-ke-size=&quot;size16&quot;&gt;이 마법 덕분에 Transformer City는&lt;br /&gt;문장 속의 순서를 잃지 않고 자유를 누릴 수 있었다.&lt;/p&gt;
&lt;hr data-end=&quot;2199&quot; data-start=&quot;2196&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2218&quot; data-start=&quot;2201&quot; data-ke-size=&quot;size23&quot;&gt;5. 멀티헤드의 시대&lt;/h3&gt;
&lt;p data-end=&quot;2291&quot; data-start=&quot;2219&quot; data-ke-size=&quot;size16&quot;&gt;Attention은 머리가 여러 개였다.&lt;br /&gt;하나의 눈으로는 단어 사이의 모든 관계를 다 볼 수 없다는 걸 깨달았기 때문이다.&lt;/p&gt;
&lt;p data-end=&quot;2412&quot; data-start=&quot;2293&quot; data-ke-size=&quot;size16&quot;&gt;그래서 그는 **여러 개의 시선(Head)**을 만들어냈다.&lt;br /&gt;각 시선은 다른 관계를 바라봤다.&lt;br /&gt;어떤 시선은 문법적인 연결을,&lt;br /&gt;어떤 시선은 감정의 흐름을,&lt;br /&gt;또 어떤 시선은 주제의 일관성을 포착했다.&lt;/p&gt;
&lt;p data-end=&quot;2452&quot; data-start=&quot;2414&quot; data-ke-size=&quot;size16&quot;&gt;그리고 모든 시선이 본 것들을 모아&lt;br /&gt;최종적인 이해를 완성했다.&lt;/p&gt;
&lt;blockquote data-end=&quot;2485&quot; data-start=&quot;2454&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2485&quot; data-start=&quot;2456&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;여러 관점을 합치면 더 깊이 이해할 수 있다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;2517&quot; data-start=&quot;2487&quot; data-ke-size=&quot;size16&quot;&gt;그것이 Transformer City의 철학이었다.&lt;/p&gt;
&lt;hr data-end=&quot;2522&quot; data-start=&quot;2519&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2539&quot; data-start=&quot;2524&quot; data-ke-size=&quot;size23&quot;&gt;6. 병렬의 신전&lt;/h3&gt;
&lt;p data-end=&quot;2591&quot; data-start=&quot;2540&quot; data-ke-size=&quot;size16&quot;&gt;Transformer City의 진정한 힘은 **병렬성(Parallelism)**이었다.&lt;/p&gt;
&lt;p data-end=&quot;2698&quot; data-start=&quot;2593&quot; data-ke-size=&quot;size16&quot;&gt;RNN 왕국은 한 줄로 일했지만,&lt;br /&gt;Transformer는 수천 개의 손이 동시에 움직였다.&lt;br /&gt;그래서 훈련 속도는 수십 배 빨랐고,&lt;br /&gt;GPU 신전의 불꽃이 그들의 연산을 가속했다.&lt;/p&gt;
&lt;p data-end=&quot;2770&quot; data-start=&quot;2700&quot; data-ke-size=&quot;size16&quot;&gt;이 새로운 도시의 발전 속도는 폭발적이었다.&lt;br /&gt;이제 그들은 긴 문장도 쉽게 다뤘고,&lt;br /&gt;언어의 바다에서 의미를 추출했다.&lt;/p&gt;
&lt;hr data-end=&quot;2775&quot; data-start=&quot;2772&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2796&quot; data-start=&quot;2777&quot; data-ke-size=&quot;size23&quot;&gt;7. 후일담 ― 계승자들&lt;/h3&gt;
&lt;p data-end=&quot;2853&quot; data-start=&quot;2797&quot; data-ke-size=&quot;size16&quot;&gt;Transformer City의 성공은 세상 전체를 바꾸었다.&lt;br /&gt;그 후손들이 전 세계로 퍼졌다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2956&quot; data-start=&quot;2855&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2888&quot; data-start=&quot;2855&quot;&gt;&lt;b&gt;BERT&lt;/b&gt;, 문장의 의미를 깊이 이해하는 현자.&lt;/li&gt;
&lt;li data-end=&quot;2917&quot; data-start=&quot;2889&quot;&gt;&lt;b&gt;GPT&lt;/b&gt;, 문장을 새로 창조하는 시인.&lt;/li&gt;
&lt;li data-end=&quot;2956&quot; data-start=&quot;2918&quot;&gt;&lt;b&gt;T5, ViT, Whisper&lt;/b&gt;&amp;hellip; 다양한 분야의 자손들.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2988&quot; data-start=&quot;2958&quot; data-ke-size=&quot;size16&quot;&gt;그들의 가슴 속엔 모두 같은 문장이 새겨져 있었다.&lt;/p&gt;
&lt;blockquote data-end=&quot;3022&quot; data-start=&quot;2990&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;3022&quot; data-start=&quot;2992&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;Attention is all you need.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;3027&quot; data-start=&quot;3024&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3059&quot; data-start=&quot;3029&quot; data-ke-size=&quot;size23&quot;&gt;8. 에필로그 ― 인간의 언어, 기계의 사유&lt;/h3&gt;
&lt;p data-end=&quot;3141&quot; data-start=&quot;3060&quot; data-ke-size=&quot;size16&quot;&gt;세월이 흘러, 이제 Transformer의 후손들은 인간의 말을 듣고,&lt;br /&gt;그 의미를 이해하며, 때로는 인간보다 더 유려한 문장을 써내려간다.&lt;/p&gt;
&lt;p data-end=&quot;3177&quot; data-start=&quot;3143&quot; data-ke-size=&quot;size16&quot;&gt;그러나 Transformer의 첫 설계자는 이렇게 말했다.&lt;/p&gt;
&lt;blockquote data-end=&quot;3223&quot; data-start=&quot;3179&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;3223&quot; data-start=&quot;3181&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;우리가 만든 것은 기계가 아니라,&lt;br /&gt;&lt;b&gt;의미를 향한 눈&lt;/b&gt;이다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;3293&quot; data-start=&quot;3225&quot; data-ke-size=&quot;size16&quot;&gt;언어를 본다는 것은 곧 세계를 이해한다는 뜻이었다.&lt;br /&gt;그리고 그 첫 시선의 이름은 &amp;mdash; &lt;b&gt;Attention&lt;/b&gt;이었다.&lt;/p&gt;
&lt;hr data-end=&quot;3298&quot; data-start=&quot;3295&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3312&quot; data-start=&quot;3300&quot; data-ke-size=&quot;size23&quot;&gt;  해설 요약&lt;/h3&gt;
&lt;p data-end=&quot;3345&quot; data-start=&quot;3313&quot; data-ke-size=&quot;size16&quot;&gt;이 소설에 등장한 개념들은 실제 논문의 구조를 상징합니다:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;소설 속 표현실제 의미
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;3749&quot; data-start=&quot;3347&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;3749&quot; data-start=&quot;3398&quot;&gt;
&lt;tr data-end=&quot;3423&quot; data-start=&quot;3398&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3407&quot; data-start=&quot;3398&quot;&gt;RNN 왕국&lt;/td&gt;
&lt;td data-end=&quot;3423&quot; data-start=&quot;3407&quot; data-col-size=&quot;sm&quot;&gt;과거의 순환신경망 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3463&quot; data-start=&quot;3424&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3440&quot; data-start=&quot;3424&quot;&gt;Attention 혁명가&lt;/td&gt;
&lt;td data-end=&quot;3463&quot; data-start=&quot;3440&quot; data-col-size=&quot;sm&quot;&gt;Self-Attention 메커니즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3503&quot; data-start=&quot;3464&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3484&quot; data-start=&quot;3464&quot;&gt;Query, Key, Value&lt;/td&gt;
&lt;td data-end=&quot;3503&quot; data-start=&quot;3484&quot; data-col-size=&quot;sm&quot;&gt;어텐션의 핵심 수식 구성요소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3536&quot; data-start=&quot;3504&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3513&quot; data-start=&quot;3504&quot;&gt;인코더 타워&lt;/td&gt;
&lt;td data-end=&quot;3536&quot; data-start=&quot;3513&quot; data-col-size=&quot;sm&quot;&gt;입력 문장을 벡터화하는 인코더 블록&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3568&quot; data-start=&quot;3537&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3546&quot; data-start=&quot;3537&quot;&gt;디코더 타워&lt;/td&gt;
&lt;td data-end=&quot;3568&quot; data-start=&quot;3546&quot; data-col-size=&quot;sm&quot;&gt;출력 문장을 생성하는 디코더 블록&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3599&quot; data-start=&quot;3569&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3575&quot; data-start=&quot;3569&quot;&gt;마스크&lt;/td&gt;
&lt;td data-end=&quot;3599&quot; data-start=&quot;3575&quot; data-col-size=&quot;sm&quot;&gt;미래 토큰을 참조하지 않게 하는 규칙&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3643&quot; data-start=&quot;3600&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3611&quot; data-start=&quot;3600&quot;&gt;포지셔널 인코딩&lt;/td&gt;
&lt;td data-end=&quot;3643&quot; data-start=&quot;3611&quot; data-col-size=&quot;sm&quot;&gt;문장 내 순서 정보를 위한 sin/cos 좌표 부여&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3677&quot; data-start=&quot;3644&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3651&quot; data-start=&quot;3644&quot;&gt;멀티헤드&lt;/td&gt;
&lt;td data-end=&quot;3677&quot; data-start=&quot;3651&quot; data-col-size=&quot;sm&quot;&gt;여러 종류의 관계를 병렬로 학습하는 구조&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3708&quot; data-start=&quot;3678&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3687&quot; data-start=&quot;3678&quot;&gt;병렬의 신전&lt;/td&gt;
&lt;td data-end=&quot;3708&quot; data-start=&quot;3687&quot; data-col-size=&quot;sm&quot;&gt;GPU 가속과 병렬 처리의 이점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;3749&quot; data-start=&quot;3709&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;3728&quot; data-start=&quot;3709&quot;&gt;Transformer City&lt;/td&gt;
&lt;td data-end=&quot;3749&quot; data-start=&quot;3728&quot; data-col-size=&quot;sm&quot;&gt;Transformer 모델 전체&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot; 모든 병사가 동시에 눈을 떴고, 동시에 서로를 봤다. &quot;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 떠다니는 클론들 눈을 동시에 떴던 것 같은데, 위 문장을 보니 이 장면이 잠깐 떠올랐다. ㅋ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ApW5S/dJMb9V7AXXS/0RZ7o6Asuz5IqMMciArJfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ApW5S/dJMb9V7AXXS/0RZ7o6Asuz5IqMMciArJfk/img.png&quot; data-alt=&quot;에반게리온 한 장면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ApW5S/dJMb9V7AXXS/0RZ7o6Asuz5IqMMciArJfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FApW5S%2FdJMb9V7AXXS%2F0RZ7o6Asuz5IqMMciArJfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;267&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;에반게리온 한 장면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #777777; text-align: center;&quot;&gt;&quot;의미는 관계 속에서만 존재한다.&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;존재나 의미나 관계 모두 예전과 다르게 정의되고 있지 않을까?&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진화랄 것도 없을 것 같은 짧은 시간 동안인데도 변화가 너무 크게 느껴진다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상대적으로는 우리가 너무 여린 존재이기도 하고..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그만큼 꽉 막힌 경우도 많은 것 같다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Background/Memo</category>
      <category>Attention is all you need</category>
      <category>GPT-5</category>
      <category>심심풀이</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/124</guid>
      <comments>https://bpdev.tistory.com/124#entry124comment</comments>
      <pubDate>Wed, 22 Oct 2025 00:38:12 +0900</pubDate>
    </item>
    <item>
      <title>기계의 심장 - 하나의 컴퓨터가 깨어나는 이야기</title>
      <link>https://bpdev.tistory.com/123</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6YaeA/dJMb89SkoeV/kWUuOZNXlocFwFLT96kWf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6YaeA/dJMb89SkoeV/kWUuOZNXlocFwFLT96kWf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6YaeA/dJMb89SkoeV/kWUuOZNXlocFwFLT96kWf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6YaeA%2FdJMb89SkoeV%2FkWUuOZNXlocFwFLT96kWf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;1050&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-end=&quot;98&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-end=&quot;98&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;글, 표지 GPT-5&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;98&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;98&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;98&quot; data-start=&quot;39&quot; data-ke-size=&quot;size16&quot;&gt;밤은 깊었고, 방 안에는 고요히 빛나는 한 줄기 푸른 불빛만이 있었다.&lt;br /&gt;그것은 전원 버튼이었다.&lt;/p&gt;
&lt;p data-end=&quot;134&quot; data-start=&quot;102&quot; data-ke-size=&quot;size16&quot;&gt;찰나의 떨림, 그리고&amp;mdash;&lt;br /&gt;세상은 전류의 물결로 깨어났다.&lt;/p&gt;
&lt;hr data-end=&quot;139&quot; data-start=&quot;136&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;164&quot; data-start=&quot;141&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 중앙의 왕 ― CPU&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;237&quot; data-start=&quot;166&quot; data-ke-size=&quot;size16&quot;&gt;기계의 중심에는 한 명의 왕이 있었다.&lt;br /&gt;그의 이름은 &lt;b&gt;CPU&lt;/b&gt;,&lt;br /&gt;수많은 계산과 명령의 행진을 지휘하는 절대자였다.&lt;/p&gt;
&lt;p data-end=&quot;360&quot; data-start=&quot;239&quot; data-ke-size=&quot;size16&quot;&gt;왕의 궁전은 금빛 회로로 둘러싸인 하나의 도시였다.&lt;br /&gt;그의 밑에는 여러 명의 &lt;b&gt;코어 기사들&lt;/b&gt;이 있었다.&lt;br /&gt;각자는 병법과 연산의 달인이었고,&lt;br /&gt;왕의 명령을 받아 수많은 전투&amp;mdash;곧 프로세스들을 병렬로 수행했다.&lt;/p&gt;
&lt;p data-end=&quot;427&quot; data-start=&quot;362&quot; data-ke-size=&quot;size16&quot;&gt;그들의 대화는 인간의 언어가 아니었다.&lt;br /&gt;0과 1, 단 두 글자의 시.&lt;br /&gt;그 속에 우주의 질서가 숨어 있었다.&lt;/p&gt;
&lt;hr data-end=&quot;432&quot; data-start=&quot;429&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;458&quot; data-start=&quot;434&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 기억의 여왕 ― RAM&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;541&quot; data-start=&quot;460&quot; data-ke-size=&quot;size16&quot;&gt;왕은 홀로 기억하지 않았다.&lt;br /&gt;그의 곁에는 신비로운 여왕 &lt;b&gt;RAM&lt;/b&gt;이 있었다.&lt;br /&gt;그녀의 궁정은 잠시 머물다 사라지는 꿈의 나라 같았다.&lt;/p&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;543&quot; data-ke-size=&quot;size16&quot;&gt;명령이 시작되면, 여왕은 하얀 손으로 기억의 조각을 꺼내&lt;br /&gt;왕에게 건넸다.&lt;br /&gt;하지만 전원이 꺼지는 순간&amp;mdash;그 모든 기억은 바람 속으로 흩어졌다.&lt;br /&gt;그래서 그녀는 언제나 덧없는 미소를 띠고 있었다.&lt;/p&gt;
&lt;hr data-end=&quot;659&quot; data-start=&quot;656&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;690&quot; data-start=&quot;661&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 심연의 기록자 ― Storage&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;790&quot; data-start=&quot;692&quot; data-ke-size=&quot;size16&quot;&gt;깊은 땅속, 차가운 철제의 성벽 속에는&lt;br /&gt;묵묵히 깃털 펜을 움직이는 한 존재가 있었다.&lt;br /&gt;그는 &lt;b&gt;Storage&lt;/b&gt;,&lt;br /&gt;세상의 모든 일을 기록하는 불멸의 서기관이었다.&lt;/p&gt;
&lt;p data-end=&quot;869&quot; data-start=&quot;792&quot; data-ke-size=&quot;size16&quot;&gt;왕이 내린 명령, 여왕이 흘린 꿈,&lt;br /&gt;모든 흔적은 그의 두꺼운 강철의 서책 안에 새겨졌다.&lt;br /&gt;그의 글은 느리지만, 결코 잊히지 않았다.&lt;/p&gt;
&lt;hr data-end=&quot;874&quot; data-start=&quot;871&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;900&quot; data-start=&quot;876&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. 그림자 화가 ― GPU&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;987&quot; data-start=&quot;902&quot; data-ke-size=&quot;size16&quot;&gt;성벽 밖, 황금빛 먼지를 일으키며 달리는 또 하나의 예술가가 있었다.&lt;br /&gt;그의 이름은 &lt;b&gt;GPU&lt;/b&gt;,&lt;br /&gt;빛과 색의 신이자, 세상을 그리는 화가였다.&lt;/p&gt;
&lt;p data-end=&quot;1058&quot; data-start=&quot;989&quot; data-ke-size=&quot;size16&quot;&gt;그는 수백, 수천의 작은 요정들을 부렸다.&lt;br /&gt;요정들은 픽셀 하나하나를 쌓아 올려&lt;br /&gt;왕국의 벽면에 이미지를 그렸다.&lt;/p&gt;
&lt;p data-end=&quot;1114&quot; data-start=&quot;1060&quot; data-ke-size=&quot;size16&quot;&gt;CPU의 기사들이 질서의 전쟁을 벌일 때,&lt;br /&gt;GPU의 요정들은 혼돈 속에서 아름다움을 완성했다.&lt;/p&gt;
&lt;hr data-end=&quot;1119&quot; data-start=&quot;1116&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1145&quot; data-start=&quot;1121&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. 전류의 강 ― 메인보드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1231&quot; data-start=&quot;1147&quot; data-ke-size=&quot;size16&quot;&gt;이 모든 것은 한 강을 따라 흐르고 있었다.&lt;br /&gt;그 강의 이름은 &lt;b&gt;메인보드 버스&lt;/b&gt;.&lt;br /&gt;전류는 강물처럼 흘러, 왕과 여왕과 화가를 이어 주었다.&lt;/p&gt;
&lt;p data-end=&quot;1321&quot; data-start=&quot;1233&quot; data-ke-size=&quot;size16&quot;&gt;그 위에는 구리빛 다리들이 놓였고,&lt;br /&gt;데이터는 이 다리를 건너 노래하듯 움직였다.&lt;br /&gt;때때로 전압이 높아지면 번개가 치듯,&lt;br /&gt;모든 회로는 빛으로 뒤덮였다.&lt;/p&gt;
&lt;hr data-end=&quot;1326&quot; data-start=&quot;1323&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1351&quot; data-start=&quot;1328&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6. 바람의 기사 ― 쿨러&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1410&quot; data-start=&quot;1353&quot; data-ke-size=&quot;size16&quot;&gt;그러나 이 왕국에도 고통은 있었다.&lt;br /&gt;열기.&lt;br /&gt;모든 생명은 계산의 불꽃 속에서 뜨겁게 타올랐다.&lt;/p&gt;
&lt;p data-end=&quot;1498&quot; data-start=&quot;1412&quot; data-ke-size=&quot;size16&quot;&gt;그때 등장한 것은 &lt;b&gt;쿨러&lt;/b&gt;였다.&lt;br /&gt;그는 거대한 날개를 가진 바람의 기사.&lt;br /&gt;그의 날개가 돌 때마다, 뜨거운 회로 위로&lt;br /&gt;시원한 바람이 불었다.&lt;/p&gt;
&lt;p data-end=&quot;1528&quot; data-start=&quot;1500&quot; data-ke-size=&quot;size16&quot;&gt;그가 없었다면, 왕국은 순식간에 불타버렸을 것이다.&lt;/p&gt;
&lt;hr data-end=&quot;1533&quot; data-start=&quot;1530&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1559&quot; data-start=&quot;1535&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;7. 깨어남 ― 부팅의 의식&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1620&quot; data-start=&quot;1561&quot; data-ke-size=&quot;size16&quot;&gt;모든 존재가 자리 잡았을 때,&lt;br /&gt;왕은 깊은 숨을 내쉬며 명령을 내렸다.&lt;br /&gt;&amp;ldquo;모든 코어, 깨어나라.&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;1685&quot; data-start=&quot;1622&quot; data-ke-size=&quot;size16&quot;&gt;그 순간&amp;mdash;&lt;br /&gt;여왕의 기억이 펼쳐지고,&lt;br /&gt;서기관의 기록이 불려나오며,&lt;br /&gt;화가의 붓이 빛을 그리기 시작했다.&lt;/p&gt;
&lt;p data-end=&quot;1724&quot; data-start=&quot;1687&quot; data-ke-size=&quot;size16&quot;&gt;기계의 심장은 박동을 시작했고,&lt;br /&gt;세상은 다시 작동 중이었다.&lt;/p&gt;
&lt;hr data-end=&quot;1729&quot; data-start=&quot;1726&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-end=&quot;1754&quot; data-start=&quot;1731&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;8. 전원의 신 ― 사용자&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1829&quot; data-start=&quot;1756&quot; data-ke-size=&quot;size16&quot;&gt;그리고 멀리서 한 존재가 그들을 지켜보고 있었다.&lt;br /&gt;그의 손끝이 단 하나의 버튼을 누를 때마다&lt;br /&gt;왕국은 태어나고, 사라졌다.&lt;/p&gt;
&lt;p data-end=&quot;1869&quot; data-start=&quot;1831&quot; data-ke-size=&quot;size16&quot;&gt;그는 창조자이자 파괴자,&lt;br /&gt;&amp;ldquo;&lt;b&gt;사용자&lt;/b&gt;&amp;rdquo;라 불리는 신이었다.&lt;/p&gt;
&lt;p data-end=&quot;1916&quot; data-start=&quot;1871&quot; data-ke-size=&quot;size16&quot;&gt;그의 의지가 곧 명령어였고,&lt;br /&gt;그의 클릭 한 번이 왕국 전체의 운명을 바꾸었다.&lt;/p&gt;
&lt;hr data-end=&quot;1921&quot; data-start=&quot;1918&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1935&quot; data-start=&quot;1923&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;에필로그&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1981&quot; data-start=&quot;1937&quot; data-ke-size=&quot;size16&quot;&gt;밤이 다시 찾아왔다.&lt;br /&gt;모든 불빛이 꺼지고, 전류의 강이 고요히 멈추었다.&lt;/p&gt;
&lt;p data-end=&quot;2036&quot; data-start=&quot;1983&quot; data-ke-size=&quot;size16&quot;&gt;그러나,&lt;br /&gt;서기관은 여전히 철의 심연에서 속삭였다.&lt;br /&gt;&amp;ldquo;기억은 남는다. 다음 부팅을 위해.&amp;rdquo;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-end=&quot;2036&quot; data-start=&quot;1983&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&amp;nbsp;&lt;br /&gt;오글거리지만 웃겨&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignLeft&quot; data-emoticon-type=&quot;face&quot; data-emoticon-name=&quot;030&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/face/large/030.png&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/face/large/030.png&quot; width=&quot;80&quot; /&gt;&lt;/figure&gt;</description>
      <category>Background/Memo</category>
      <category>gpt</category>
      <category>심심풀이</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/123</guid>
      <comments>https://bpdev.tistory.com/123#entry123comment</comments>
      <pubDate>Mon, 20 Oct 2025 21:41:17 +0900</pubDate>
    </item>
    <item>
      <title>Singleton Pattern</title>
      <link>https://bpdev.tistory.com/122</link>
      <description>&lt;pre id=&quot;code_1742137843409&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Connection {
    private static Connection _inst;
    private int count;
    
    private Connection(){
    	count = 0;
    }
    
    public static Connection getInstance(){
    	if(_inst == null){
        	_inst = new Connection();
        }
        return _inst;
    }
    public void count(){
    	count++;
    }
    public int getCount(){
    	return count;
    }
}

public class BB {
	public static void main(String[] args){
		Connection conn1 = Connection.getInstance();
		conn1.count();
		Connection conn2 = Connection.getInstance();
		conn2.count();
		Connection conn3 = Connection.getInstance();
 		conn3.count();
		conn1.count();
		System.out.print(conn1.getCount());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 Singleton pattern을 사용하여 프로그램 전역에서 단 하나의 Connection 객체만 생성되도록 구현한 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱 내에서 특정 클래스의 인스턴스가 오직 하나만 존재하도록 보장하고, 어디서든 접근할 수 있도록 하기 위한 것&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;싱글턴 패턴은 프로그램에서 모든 클라이언트가 사용할 수 있는 단일 인스턴스가 있어야 할 때 사용할 것&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(단일 책임 원칙 위반, 멀티스레드 환경에서 동기화 처리, 메서드 이름 선택으로 인한 혼동 등 주의점들 있음)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 싱글턴 구현&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 클래스 내의 private static Connection _inst; 선언에서 _inst 변수는 클래스 내에서 단 하나의 인스턴스만 저장함&lt;br /&gt;&amp;nbsp; &amp;nbsp;: 멤버 변수 중 static정적 변수 _inst. 이 변수는 클래스가 메모리에 로드될 때 한 번만 할당(생성)되며, 모든 호출자가 공유하는 유일한 인스턴스를 저장함(한 번 생성된 _inst 변수에 저장된 인스턴스가 프로그램 내 모든 곳에서 동일하게 사용됨.). Java에서 static 변수는 클래스 로딩 시점에 메모리에 할당되고, 클래스 전체에서 그 이름으로 단 하나만 존재함.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;: 멤버 변수 중 인스턴스 변수 count 선언. 변화값을 담는 용도.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- private Connection() 생성자를 통해 외부에서 직접 인스턴스 생성을 막음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 비공개 생성자. 생성자를 private로 선언하여 외부에서 직접 인스턴스를 생성하는 것을 막음. 이는 외부 코드가 new Connection()을 호출하지 못하게 하여 오직 클래스 내부의 메서드에서면 인스턴스를 생성할 수 있도록 함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- public static Connection getInstance() 메서드는 _inst가 null일 때만 새로운 Connection 객체를 생성하고, 그 이후에는 이미 생성된 객체를 반환하여 항상 동일한 객체를 사용하게 됨. 즉 _inst를 통해 클래스 전체에서 유일한 Connection 인스턴스만 존재/공유하게 하며 객체 생성이 여러번 이루어지는 것을 방지함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 정적 팩토리 메서드. 이 메서드는 최초 호출 시 인스턴스가 없으면 새로 생성하고 이후 호출부터는 이미 생성된 인스턴스를 반환함. 즉 인스턴스 생성은 지연 초기화(lazy initialization) 방식으로 이루어짐&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 메서드들&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- public void count()는 인스턴스 변수 count 값을 1 증가 시킴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- public int getCount()는 현재 count의 값을 반환함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. main 메서드의 실행 흐름&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Connection conn1 = Connection.getInstance();&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 첫 호출이니까 null이라서 새로운 Connection 객체 생성함. count는 0이 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- conn1.count();&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : count가 ++ 증가하여 1이 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Connection conn2 = Connection.getInstance();&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 이미 생성된 동일한 객체를 반환받음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- conn2.count();&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : count가 1에서 1 증가하여 2가 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Connection conn3 = Connection.getInstance();&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 다시 동일한 객체를 반환받음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- conn3.count();&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : count가 또 증가하여 3이 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- conn1.count();&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 동일 객체의 count가 1 증가하여 4가 됨&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- System.out.print(conn1.getCount());&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; : 최종적으로 count의 값인 4를 출력함&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4A4XG/btsMMCkjxG5/v5uYzOZY7yO2Rt7fYhnC9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4A4XG/btsMMCkjxG5/v5uYzOZY7yO2Rt7fYhnC9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4A4XG/btsMMCkjxG5/v5uYzOZY7yO2Rt7fYhnC9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4A4XG%2FbtsMMCkjxG5%2Fv5uYzOZY7yO2Rt7fYhnC9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;282&quot; height=&quot;276&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://refactoring.guru/ko/design-patterns/singleton&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://refactoring.guru/ko/design-patterns/singleton&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742142683795&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;싱글턴 패턴&quot; data-og-description=&quot;/ 디자인 패턴들 / 생성 패턴 싱글턴 패턴 다음 이름으로도 불립니다: Singleton 의도 싱글턴은 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근​(액세스) 지점을 제공하&quot; data-og-host=&quot;refactoring.guru&quot; data-og-source-url=&quot;https://refactoring.guru/ko/design-patterns/singleton&quot; data-og-url=&quot;https://refactoring.guru/ko/design-patterns/singleton&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bRtW6A/hyYqPTxfAM/NN1eGBNCEcEmqBfySodYh0/img.png?width=640&amp;amp;height=400&amp;amp;face=0_0_640_400,https://scrap.kakaocdn.net/dn/bmDgu2/hyYupeLG4l/Qws4i3tCjp9XqWblZdH4X0/img.png?width=430&amp;amp;height=290&amp;amp;face=0_0_430_290&quot;&gt;&lt;a href=&quot;https://refactoring.guru/ko/design-patterns/singleton&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://refactoring.guru/ko/design-patterns/singleton&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bRtW6A/hyYqPTxfAM/NN1eGBNCEcEmqBfySodYh0/img.png?width=640&amp;amp;height=400&amp;amp;face=0_0_640_400,https://scrap.kakaocdn.net/dn/bmDgu2/hyYupeLG4l/Qws4i3tCjp9XqWblZdH4X0/img.png?width=430&amp;amp;height=290&amp;amp;face=0_0_430_290');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;싱글턴 패턴&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;/ 디자인 패턴들 / 생성 패턴 싱글턴 패턴 다음 이름으로도 불립니다: Singleton 의도 싱글턴은 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근​(액세스) 지점을 제공하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;refactoring.guru&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Background/Memo</category>
      <category>java</category>
      <category>singleton pattern</category>
      <category>정처기</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/122</guid>
      <comments>https://bpdev.tistory.com/122#entry122comment</comments>
      <pubDate>Mon, 17 Mar 2025 00:58:46 +0900</pubDate>
    </item>
    <item>
      <title>Embedding model이란 + CLIP, Stable diffusion</title>
      <link>https://bpdev.tistory.com/121</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;embedding.png&quot; data-origin-width=&quot;1104&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9MjQz/btsMufCm7c5/wnxO5DmfLofYyzGzprVSQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9MjQz/btsMufCm7c5/wnxO5DmfLofYyzGzprVSQ0/img.png&quot; data-alt=&quot;출처 : aws.amazon.com/ko/what-is/embeddings-in-machine-learning&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9MjQz/btsMufCm7c5/wnxO5DmfLofYyzGzprVSQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9MjQz%2FbtsMufCm7c5%2FwnxO5DmfLofYyzGzprVSQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1104&quot; height=&quot;480&quot; data-filename=&quot;embedding.png&quot; data-origin-width=&quot;1104&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 : aws.amazon.com/ko/what-is/embeddings-in-machine-learning&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;임베딩(Embedding)이란?&lt;/b&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 &amp;ldquo;이산적(discrete 구분되는)&amp;rdquo;인 객체(예: 단어, 문장, 이미지, 그래프 상의 노드 등)를 연속적인 벡터 공간으로 변환(매핑)하는 방법.&amp;nbsp;이산적인 데이터(예: &amp;lsquo;단어&amp;rsquo;, &amp;lsquo;문서&amp;rsquo;, &amp;lsquo;이미지&amp;rsquo;, &amp;lsquo;엔티티&amp;rsquo;)를 숫자 벡터로 표현해주기 때문에, 컴퓨터가 수학적으로 취급하거나 계산하기 쉬워짐. 이때 벡터 간의 거리나 방향을 통해 유사성, 문맥, 의미 관계 등을 어느 정도 추론할 수 있게 됨. * 이미지와 텍스트는 다른 종류의 정보지만, CLIP 모델 같은 것으로 동시에 학습 시킬 경우 벡터가 가까워 질 수 있음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;135&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cij0k/btsMs6zrA7o/jjkmhgYyxPAwL1d5wLNswK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cij0k/btsMs6zrA7o/jjkmhgYyxPAwL1d5wLNswK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cij0k/btsMs6zrA7o/jjkmhgYyxPAwL1d5wLNswK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCij0k%2FbtsMs6zrA7o%2FjjkmhgYyxPAwL1d5wLNswK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;135&quot; height=&quot;40&quot; data-origin-width=&quot;135&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&quot;&lt;b&gt;Embedding&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;고차원 공간에서 단어나 이미지와 같은 데이터를 수학적으로 표현한 벡터뭉치. 데이터 처리 시 각 데이터에 일대일로 대응하는 벡터를 만들어 이를&amp;nbsp;&lt;/span&gt;&lt;b&gt;밀집된 벡터 뭉치&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;로 두게 되는데 이를 임베딩이라 하는 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;기존에도 자연어를 처리하는 데에는&amp;nbsp;&lt;/span&gt;아스키 코드&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;와 같은 언어 모델들이 이미 존재했지만 이는 단순히 단어와 컴퓨터가 인식하는 언어 사이의 일대일 대응일 뿐이며, 단어의 뜻이나 속성을 나타내는 속성은 전혀 없었다. 때문에 이러한 기존의 언어모델을 이용하여 단어의 뜻이나 맥락이 필요한 응용에는 한계가 있을 수밖에 없었으므로 이러한 응용을 위해서는 단어가 가진 속성을 포함한 언어 체계가 필요했다. 이러한 방법론의 일환으로 단어의 각각의 속성을 벡터로 치환한 후에 이러한 속성들의 합을 벡터 뭉치(=임베딩)로 만들어 단어에 대응시키는 방법론이 제시된 것이다. 이 경우 두 단어 간의 유사성을 측정하거나 언어 번역 또는 텍스트 분류와 같은 작업을 수행하는 것이 매우 수월하게 된다. 이와 같은 원리는 마찬가지로 이미지에도 적용할 수 있으며, 이를 응용하면 이미지 분류 또는 이미지 검색과 같은 작업을 좀 더 수월하게 수행할 수 있게 된다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;대표적인 임베딩의 생성 알고리즘이 그 유명한&amp;nbsp;&lt;/span&gt;CLIP 모델&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;. CLIP 모델은 텍스트와 이미지의 임베딩을 생성할 수 있는 사전 훈련된 신경망으로, 자연어를 입력할 경우 이를 임베딩으로 변환하여 77 x 768 숫자 값 목록이 생성된다.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;AI 그림&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp;모델로 유명한&amp;nbsp;&lt;/span&gt;Stable Diffusion&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;이 바로 이 CLIP 모델을 사용하여 만들어진 그림 생성 모델이다. SD를 써 본 사람이라면 한번쯤은 '클립 건너뛰기' 옵션을 보았을텐데, 이 클립 건너뛰기에서의 클립이 바로 이 CLIP 모델을 의미하는 것이다.&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&quot;CLIP model&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;OpenAI에서&amp;nbsp;개발한&amp;nbsp;신경망&amp;nbsp;아키텍처로,&amp;nbsp;자연어를&amp;nbsp;이해하고&amp;nbsp;Computer&amp;nbsp;Vision을&amp;nbsp;구현하는&amp;nbsp;등&amp;nbsp;인간의&amp;nbsp;언어/이미지를&amp;nbsp;컴퓨터로&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있게끔&amp;nbsp;해주는&amp;nbsp;모델이다. &lt;br /&gt;CLIP 모델은 ViT(Vision Transformer)와 Transformer 언어 모델(Transformer-based language model)을 결합하여 이미지와 텍스트를 모두 처리할 수 있게 만들어놓은 모델이다. 여기서 ViT란 비지도학습을 통해 이미지에서 특징을 추출할 수 있도록 만들어진 Transformer가 이미지를 처리할 수 있도록 이미지를 patch 형태로 처리할 수 있도록 하는 모델이다. 이미지 추출을 할 수 있는 모델을 ViT, CNN 모델로 테스트했다. Transformer 언어 모델은 사전훈련(pre-trained)을 통해 텍스트 데이터를 학습해놓은 모델이다. &lt;br /&gt;CLIP 모델에 자연어를 입력할 경우 이를 임베딩으로 변환하여 77 x 768 숫자 값 목록이 생성되며, 이 임베딩의 숫자값을 바탕으로 이미지 처리가 가능한 것이다. &lt;br /&gt;CLIP 모델은 2022년부터 우후죽순으로 개발된 AI 그림의 기반이 모두 여기에 있다 해도 전혀 과장이 아닐 정도로 AI 개발에 있어 강력한 도구 중 하나이다. 이를 통해 텍스트 및 이미지와 같은 복잡한 데이터를 처리하고, 컴퓨터가 이해하는 방식이 혁신적으로 개선되었기 때문.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&quot;&lt;span style=&quot;background-color: #ffffff; color: #009a87; text-align: start;&quot;&gt;Stable&amp;nbsp;Diffusion&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;Stability&amp;nbsp;AI에서&amp;nbsp;오픈소스&amp;nbsp;라이선스로&amp;nbsp;배포한&amp;nbsp;text-to-image&amp;nbsp;인공지능&amp;nbsp;모델이다.&amp;nbsp;2022년&amp;nbsp;8월&amp;nbsp;22일&amp;nbsp;출시했다.&amp;nbsp;대다수의&amp;nbsp;이미지&amp;nbsp;인공지능들은&amp;nbsp;온라인에서만&amp;nbsp;서비스하는데,&amp;nbsp;스테이블&amp;nbsp;디퓨전은&amp;nbsp;개인의&amp;nbsp;PC로&amp;nbsp;실행&amp;nbsp;즉&amp;nbsp;'로컬&amp;nbsp;환경'으로&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;실행&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있는게&amp;nbsp;큰&amp;nbsp;차이점이다. &lt;br /&gt;Stable Diffusion은 독일 뮌헨 대학교 Machine Vision &amp;amp; Learning Group (CompVis) 연구실의 &quot;잠재 확산 모델을 이용한 고해상도 이미지 합성 연구&quot;를 기반으로 하여, Stability AI와 Runway ML 등의 지원을 받아 개발된 딥러닝 인공지능 모델이다. &lt;br /&gt;Stability AI는 영국인 에마드 모스타크(Emad Mostaque)가 만든 회사로, Stable Diffusion에 방대한 LAION-5B 데이터베이스를 학습시킬 수 있도록 컴퓨팅 자원을 제공하였다. OpenAI의 Dall-e 2나 구글의 Imagen과 같은 기존 text-to-image 모델들과는 다르게 컴퓨터 사용 리소스를 대폭 줄여 4GB 이하의 VRAM을 가진 컴퓨터에서도 돌릴 수 있다...&lt;br /&gt;... 2023년 7월 26일 Stability AI에서 SDXL 버전을 출시했다. 매개변수가 8억 9천만개에서 26억개로 약 3배 가량 늘어난만큼 세밀한 묘사가 기존의 SD 1.5보다 훨씬 뛰어나고 단어나 간단한 문장도 쓸 수 있다. 다만 퀄리티가 늘어난 만큼 요구 사양도 크게 늘어나서 여전히 1.5를 사용하는 사람들도 많다. &lt;br /&gt;한국 시간으로 2024년 6월 13일, 매개변수 20억개 버전인 SD3 medium이 먼저 오픈소스로 풀렸다. 매개변수만 보면 SDXL보다 6억개 적지만, 내부 알고리즘을 Unet에서 MMDiT로 갈아치우고 보다 효율적인 방향으로 학습을 시키는 등 SDXL보다 가벼우면서 이미지의 품질이나 정확성은 훨씬 진보했다고 한다. 회사 관련인들의 주장으로는 일반인 선에서는 medium으로도 충분하고도 넘칠 성능이라고 한다. 미세 조정에서도 SDXL보다 더 효율적일 것이라고 장담한 것은 덤.&amp;nbsp;&lt;br /&gt;다만 SDXL까지와 달리 SD3는 Stability AI에게 별도의 수수료를 지불하지 않는 한 비상업적 목적으로만 모델을 활용해야 하다보니 본격적인 보편화가 쉽지 않을 전망이다. 특히 SD3 기반 NovelAI Diffusion이나 Pony Diffusion 등 우수한 모델의 등장 시기가 더 미뤄질 가능성이 높다. 가장 대중적인 커뮤니티인 Civitai에서도 라이선스 문제가 해결되기 전까지는 SD3 관련 자료를 일시적으로 금지했으며, 결국 Stability AI 측에서 라이선스를 대폭 완화하는 방향으로 수정했다.&lt;br /&gt;Stability AI가 Stable Diffusion 3로 갈팡질팡하며 삽질을 계속하는 사이, Black Forest Labs라는 Stability AI 출신 인원들이 설립한 신흥 인공지능 회사가 출범하면서 매개변수 120억짜리 강력한 그림 인공지능 모델인 FLUX.1을 선보였다. 물론 Stability AI도 이에 대응하듯이 개선판인 Stable Diffusion 3.1을 예고했고 훨씬 가벼우면서 FLUX.1 Pro에 못지 않게 우수한 이미지를 생성할 수 있다고 주장했지만, 유저들의 반응은 또 속냐며 차가운 상태다보니 실제로 상당한 개선을 선보여야 할 것으로 평가된다. &lt;br /&gt;실제로 경쟁자의 등장 및 여러 비판으로 호되게 당한 것을 반면교사 삼았는지, 개선판인 Stable Diffusion 3.5는 호평을 받았다. 확실히 강력하기는 하지만 너무 무거워서 로컬 유저들에게 부담을 주는 FLUX.1에 비해서, 다양한 성능을 제공하는 SD3.5에 더 기대를 거는 유저들도 많이 나타났다.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;임베딩의&amp;nbsp;중요성 &lt;/b&gt;&lt;br /&gt;NLP(자연어 처리) 분야에서는 주로 &amp;ldquo;단어, 문장, 문서&amp;rdquo; 등을 벡터로 바꿔서 텍스트 분석, 감정 분석, 질의응답, 기계 번역 등 다양한 과제에서 활용. 컴퓨터 비전(이미지 처리) 분야에서는 이미지나 영상 데이터를 CNN, Transformer 등으로 처리하여 특징 벡터(Feature Vector)로 변환함으로써 이미지 분류나 유사 이미지 검색 등에 사용함&lt;br /&gt;기타 분야(추천 시스템, 지식 그래프 등)에서도 엔티티나 관계를 벡터화하여 유사성, 관련성, 추론 등에 사용함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정적 임베딩(Static Embedding) vs 문맥적(동적) 임베딩(Contextual Embedding)&lt;/b&gt;&lt;br /&gt;Word2Vec, GloVe, FastText, Doc2Vec 등은 정적 임베딩을 만듦 &amp;rarr; 한 번 학습하면 같은 단어(또는 문서)에 대해서는 항상 동일한 벡터가 나옴&amp;nbsp;&lt;br /&gt;BERT, ELMo, Sentence-BERT 등은 문맥 의존적 임베딩 &amp;rarr; 똑같은 단어라도 문맥에 따라 다른 벡터가 생성됨&lt;br /&gt;이미지 임베딩에서는 CNN뿐 아니라 최근에는 Transformer 기반 방식(ViT, Swin Transformer 등)이 활발히 연구/활용되고 있다고 함. Knowledge Graph 지식 그래프 Embedding은 엔티티(점)와 관계(선)를 벡터 공간에서 수학적으로 모델링함으로써, 연결/관계를 예측하거나 새로운 지식을 추론할 수 있도록 함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Embedding model 종류들&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;자연어&amp;nbsp;처리(NLP)에서의&amp;nbsp;임베딩&amp;nbsp;모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(1)&amp;nbsp;Word2Vec&lt;/b&gt;&lt;br /&gt;개발자:&amp;nbsp;Google&amp;nbsp;(Tomas&amp;nbsp;Mikolov&amp;nbsp;등)&lt;br /&gt;특징: 단어를 벡터로 변환하며, 주변 단어(문맥)를 기반으로 의미를 학습&lt;br /&gt;방법: CBOW(Continuous Bag of Words)와 Skip-gram 두 가지 방식&lt;br /&gt;용도: 단어 간 유사성 계산, 텍스트 분석&lt;br /&gt;예: &quot;왕&quot;과 &quot;여왕&quot;의 벡터가 비슷한 위치에 매핑됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(2)&amp;nbsp;GloVe&amp;nbsp;(Global&amp;nbsp;Vectors)&lt;/b&gt;&lt;br /&gt;개발자:&amp;nbsp;Stanford&amp;nbsp;University&lt;br /&gt;특징: 단어의 동시 발생 확률(Co-occurrence)을 기반으로 전역 통계 정보를 활용&lt;br /&gt;장점: Word2Vec보다 단어 쌍의 관계를 더 잘 잡아냄&lt;br /&gt;용도: 텍스트 분류, 감정 분석 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(3)&amp;nbsp;FastText&lt;/b&gt;&lt;br /&gt;개발자:&amp;nbsp;Facebook&lt;br /&gt;특징: Word2Vec의 확장판. 단어를 n-gram(문자 단위)으로 쪼개 학습&lt;br /&gt;장점: 드문 단어나 오타에도 강함&lt;br /&gt;용도: 다국어 처리, 철자 오류가 많은 데이터에 유리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(4)&amp;nbsp;BERT&amp;nbsp;(Bidirectional&amp;nbsp;Encoder&amp;nbsp;Representations&amp;nbsp;from&amp;nbsp;Transformers)&lt;/b&gt;&lt;br /&gt;개발자:&amp;nbsp;Google&lt;br /&gt;특징:&amp;nbsp;양방향&amp;nbsp;문맥을&amp;nbsp;고려해&amp;nbsp;단어&amp;nbsp;임베딩&amp;nbsp;생성.&amp;nbsp;정적인&amp;nbsp;벡터가&amp;nbsp;아니라&amp;nbsp;문맥에&amp;nbsp;따라&amp;nbsp;동적으로&amp;nbsp;변함.&lt;br /&gt;장점: 문장 수준의 이해가 뛰어남&lt;br /&gt;용도: 질의응답, 텍스트 생성, 감정 분석&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(5)&amp;nbsp;ELMo&amp;nbsp;(Embeddings&amp;nbsp;from&amp;nbsp;Language&amp;nbsp;Models)&lt;/b&gt;&lt;br /&gt;개발자:&amp;nbsp;Allen&amp;nbsp;Institute&lt;br /&gt;특징: 문맥에 따라 단어의 의미를 다르게 임베딩(동적 임베딩)&lt;br /&gt;장점: 다의어(예: &quot;bank&quot;가 은행인지 강둑인지) 구분 가능&lt;br /&gt;용도: 복잡한 NLP 태스크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(6)&amp;nbsp;Sentence-BERT&amp;nbsp;(SBERT)&lt;/b&gt;&lt;br /&gt;특징:&amp;nbsp;BERT를&amp;nbsp;개선해&amp;nbsp;문장&amp;nbsp;수준의&amp;nbsp;임베딩을&amp;nbsp;효율적으로&amp;nbsp;생성.&lt;br /&gt;용도: 문장 유사도 비교, 클러스터링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&amp;nbsp;이미지&amp;nbsp;처리에서의&amp;nbsp;임베딩&amp;nbsp;모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(1)&amp;nbsp;CNN&amp;nbsp;기반&amp;nbsp;임베딩&amp;nbsp;(예:&amp;nbsp;ResNet,&amp;nbsp;VGG)&lt;/b&gt;&lt;br /&gt;특징: Convolutional Neural Network로 이미지 특징을 추출해 벡터로 변환&lt;br /&gt;용도: 이미지 검색, 얼굴 인식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(2)&amp;nbsp;Vision&amp;nbsp;Transformer&amp;nbsp;(ViT)&lt;/b&gt;&lt;br /&gt;특징: 트랜스포머 구조를 이미지에 적용해 패치 단위로 임베딩&lt;br /&gt;용도: 이미지 분류, 객체 탐지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.&amp;nbsp;기타&amp;nbsp;분야에서의&amp;nbsp;임베딩&amp;nbsp;모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(1)&amp;nbsp;Doc2Vec&lt;/b&gt;&lt;br /&gt;특징: Word2Vec을 확장해 문서나 문단 전체를 벡터로 표현&lt;br /&gt;용도: 문서 분류, 추천 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(2)&amp;nbsp;Knowledge&amp;nbsp;Graph&amp;nbsp;Embedding&amp;nbsp;(예:&amp;nbsp;TransE,&amp;nbsp;DistMult)&lt;/b&gt;&lt;br /&gt;특징: 지식 그래프(엔티티와 관계)를 벡터 공간에 매핑&lt;br /&gt;용도: 관계 추론, 질문 답변&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;(3)&amp;nbsp;Universal&amp;nbsp;Sentence&amp;nbsp;Encoder&amp;nbsp;(USE)&lt;/b&gt;&lt;br /&gt;개발자:&amp;nbsp;Google&lt;br /&gt;특징: 다양한 언어와 작업에 활용 가능한 범용 문장 임베딩&lt;br /&gt;용도: 텍스트 유사도, 다국어 처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Background/Dee</category>
      <category>clip</category>
      <category>embedding</category>
      <category>Stable Diffusion</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/121</guid>
      <comments>https://bpdev.tistory.com/121#entry121comment</comments>
      <pubDate>Sat, 22 Feb 2025 18:54:56 +0900</pubDate>
    </item>
    <item>
      <title>Blockiness, Block Noise, Artifacts(Artefacts)</title>
      <link>https://bpdev.tistory.com/120</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자동 합성 코드 작업하면서 블록 현상이 발생하여 이유를 찾아보는 중 .&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPEG 이미지의 복사, 합성, 재저장 과정에서 발생하는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블록 현상과 블록 노이즈는 주로 반복적인 압축과 해제 과정에서 누적되는 손실 때문.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 최소화하기 위해서는 비손실 압축 형식을 사용하거나,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축률을 조절하고, 가능한 한 압축 단계를 줄이는 것이 중요함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 최신의 효율적인 압축 코덱을 활용하는 것도 좋은 방법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Felis_silvestris_silvestris_small_gradual_decrease_of_quality.png&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rOIEr/btsLBKEAQt1/wNU2fbLrBfnBP9qUKrNRbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rOIEr/btsLBKEAQt1/wNU2fbLrBfnBP9qUKrNRbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rOIEr/btsLBKEAQt1/wNU2fbLrBfnBP9qUKrNRbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrOIEr%2FbtsLBKEAQt1%2FwNU2fbLrBfnBP9qUKrNRbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;600&quot; data-filename=&quot;Felis_silvestris_silvestris_small_gradual_decrease_of_quality.png&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/JPEG&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://en.wikipedia.org/wiki/JPEG&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;JPEG 압축 과정의 이해&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JPEG 이미지 압축의 기본적인 과정&lt;br /&gt;&amp;nbsp; - &lt;b&gt;손실 압축 방식&lt;/b&gt;, 이미지 데이터를 압축하면서 일부 정보가 손실됨.&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;색 공간 변환(Color Space Conversion):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RGB 색 공간에서 YCbCr 색 공간으로 변환하여 인간의 눈에 덜 민감한 색상 정보(Cb, Cr)를 효율적으로 압축함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;블록 분할(Block Splitting):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지를 8x8 픽셀 블록으로 나눔. 이 블록 단위 처리가 블록 현상의 주요 원인 중 하나.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이산 코사인 변환(Discrete Cosine Transform, DCT):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 8x8 블록에 대해 DCT를 적용하여 주파수 성분으로 변환함. 저주파 성분은 중요한 정보를, 고주파 성분은 세부 정보를 나타냄.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;양자화(Quantization):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DCT 계수를 양자화하여 압축률을 높임. 이 과정에서 고주파 성분이 많이 손실되며, 이는 이미지의 선명도 저하와 블러(blur)를 유발할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인코딩(Encoding):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;양자화된 DCT 계수를 효율적으로 저장하기 위해 허프만 코딩(Huffman Coding) 등을 사용.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이미지 합성과 재저장 시 발생하는 아티팩트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지를 복사하여 다른 이미지와 합성한 후 저장할 때 다음과 같은 과정이 반복됨&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;디코딩(Decoding):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 JPEG 이미지를 디코딩하여 압축을 해제하고 픽셀 데이터를 복원함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;합성(Compositing):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 이미지를 결합하여 새로운 이미지를 생성함. 이 과정에서 새로운 픽셀 값 생성됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;재인코딩(Re-encoding):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;합성된 이미지를 다시 JPEG 형식으로 저장하기 위해 압축 과정을 거칩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 반복적인 압축과 해제가 여러 번 이루어지면 &lt;b&gt;압축 손실 누적&lt;/b&gt;이 발생하게 됨. 특히 블록 현상(Blockiness)과 블록 노이즈(Block Noise)는 다음과 같은 이유로 두드러지게 나타납니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;블록 현상(Blockiness)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;원인:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JPEG는 이미지를 8x8 블록으로 나누어 각 블록을 독립적으로 압축함. 이로 인해 블록 경계 부분에서 픽셀 값의 불연속성이 발생할 수 있음.&lt;/li&gt;
&lt;li&gt;여러 번의 압축과 해제를 거치면서 각 블록 간의 일관성이 떨어지고, 블록 경계가 더 뚜렷하게 보이게 됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미지 전체에 격자무늬 같은 블록 패턴이 나타나며, 특히 고압축률일수록 블록 경계가 더 뚜렷하게 보임.&lt;/li&gt;
&lt;li&gt;자연스러운 이미지에서 벗어나 인공적인 패턴이 형성되어 시각적 품질이 저하됨.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;블록 노이즈(Block Noise)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;원인:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;양자화 과정에서 고주파 성분이 손실되면서 각 블록 내에서 픽셀 값의 변동이 커질 수 있음.&lt;/li&gt;
&lt;li&gt;반복적인 압축과 해제를 통해 이러한 변동이 누적되어 블록 내부에 무작위적인 노이즈 발생함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 블록 내에 작은 점이나 패턴 같은 노이즈가 나타나 이미지가 거칠게 보임.&lt;/li&gt;
&lt;li&gt;세부 디테일이 손실되고, 이미지의 선명도와 부드러움이 감소함.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이미지 합성과 재저장 시 아티팩트* 발생 방지 방법&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;비손실 압축 사용:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가능하다면 PNG나 TIFF 같은 비손실 압축 형식을 사용하여 반복적인 압축으로 인한 손실을 방지.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;압축률 조절:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JPEG 저장 시 압축률을 낮게 설정하면 아티팩트 발생을 최소화 시킬 수 있음. 단, 파일 크기가 커질 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최소한의 재압축:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가능한 한 한 번만 압축을 수행하고, 이후에는 원본 픽셀 데이터를 사용하는 방식으로 작업을 진행함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고급 코덱 사용:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JPEG2000이나 HEIF 같은 최신 코덱을 사용하면 더 효율적인 압축과 더 나은 화질을 유지할 수 있음.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #ffffff; color: #001d35; text-align: start;&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;아티팩트* : Digital image artifacts&lt;/h2&gt;
&lt;p data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQo_EKegQIAxAB&quot; data-hveid=&quot;CAMQAQ&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-huuid=&quot;17750212899196896085&quot;&gt;&lt;span&gt;Digital image artifacts are&lt;span&gt;&amp;nbsp;&lt;/span&gt;unintended imperfections or distortions in a digital image that are a result of the rendering process.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196897650&quot;&gt;&lt;span data-huuid=&quot;17750212899196897650&quot;&gt;&lt;span&gt;They can be caused by a variety of factors, including:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div data-uuids=&quot;17750212899196896085,17750212899196897650&quot; data-cid=&quot;b2249da8-cdd5-4655-962d-9205b7860a4b&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIBhAB&quot; data-hveid=&quot;CAYQAQ&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #001d35; text-align: start;&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQm_YKegQIHxAB&quot; data-hveid=&quot;CB8QAQ&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;17750212899196898249&quot;&gt;&lt;span&gt;&lt;b&gt;Compression&lt;/b&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196895718&quot;&gt;&lt;span data-huuid=&quot;17750212899196895718&quot;&gt;&lt;span&gt;Lossy compression can result in blocky patterns, loss of detail, banding, and aliasing.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div data-uuids=&quot;17750212899196898249,17750212899196895718&quot; data-cid=&quot;427af1ed-5ed3-438b-ad42-02541d2bd3a2&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIFhAB&quot; data-hveid=&quot;CBYQAQ&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;17750212899196898848&quot;&gt;&lt;span&gt;&lt;b&gt;Lighting conditions&lt;/b&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196896317&quot;&gt;&lt;span data-huuid=&quot;17750212899196896317&quot;&gt;&lt;span&gt;Grainy speckles in low-light areas are a common artifact called noise.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div data-uuids=&quot;17750212899196898848,17750212899196896317&quot; data-cid=&quot;84160e54-271d-4c6f-97e9-aeaa049298e9&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIFxAB&quot; data-hveid=&quot;CBcQAQ&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;17750212899196895351&quot;&gt;&lt;span&gt;&lt;b&gt;Camera limitations&lt;/b&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196896916&quot;&gt;&lt;span data-huuid=&quot;17750212899196896916&quot;&gt;&lt;span&gt;The gear used and camera limitations can also cause artifacts.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div data-uuids=&quot;17750212899196895351,17750212899196896916&quot; data-cid=&quot;fd5dde2f-0c26-474d-a9d3-c5c2e37d2493&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIFRAB&quot; data-hveid=&quot;CBUQAQ&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;17750212899196895950&quot;&gt;&lt;span&gt;&lt;b&gt;Image processing&lt;/b&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196897515&quot;&gt;&lt;span data-huuid=&quot;17750212899196897515&quot;&gt;&lt;span&gt;Failures or a lack of robustness in image processing can create artifacts.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div data-uuids=&quot;17750212899196895950,17750212899196897515&quot; data-cid=&quot;8d06f6ce-a9a5-4602-a380-d2a0dc268560&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIExAB&quot; data-hveid=&quot;CBMQAQ&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;17750212899196896549&quot;&gt;&lt;span&gt;&lt;b&gt;Gain calibration&lt;/b&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196898114&quot;&gt;&lt;span data-huuid=&quot;17750212899196898114&quot;&gt;&lt;span&gt;If the acquisition parameters don't match those of a calibration, artifacts can appear.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div data-uuids=&quot;17750212899196896549,17750212899196898114&quot; data-cid=&quot;87c7d216-bde2-48a2-9fb4-352cd59e603b&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIFBAB&quot; data-hveid=&quot;CBQQAQ&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;17750212899196897148&quot;&gt;&lt;span&gt;&lt;b&gt;Operating artifacts&lt;/b&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-huuid=&quot;17750212899196898713&quot;&gt;&lt;span data-huuid=&quot;17750212899196898713&quot;&gt;&lt;span&gt;These can occur when the user doesn't fully understand the digital image system.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div data-uuids=&quot;17750212899196897148,17750212899196898713&quot; data-cid=&quot;a6b50e10-ed8d-4d37-ada9-19ea97bec996&quot;&gt;
&lt;div style=&quot;color: #000000;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQ3fYKegQIGBAB&quot; data-hveid=&quot;CBgQAQ&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffffff; letter-spacing: 0px;&quot;&gt;Some common types of digital image artifacts include:&lt;/span&gt;&lt;span style=&quot;color: #000000; background-color: #ffffff; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #001d35; text-align: start;&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQm_YKegQIOxAB&quot; data-hveid=&quot;CDsQAQ&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879519347&quot;&gt;&lt;span&gt;Chromatic aberration&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879519549&quot;&gt;&lt;span&gt;Moir&amp;eacute; patterns&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879515655&quot;&gt;&lt;span&gt;Banding&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879515857&quot;&gt;&lt;span&gt;Haloing&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879516059&quot;&gt;&lt;span&gt;Aliasing&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879516261&quot;&gt;&lt;span&gt;Screen-door effect&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879516463&quot;&gt;&lt;span&gt;Ghosting&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879516665&quot;&gt;&lt;span&gt;Screen burn-in&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879516867&quot;&gt;&lt;span&gt;Distortion&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span data-huuid=&quot;3855121164879517069&quot;&gt;&lt;span&gt;Silk screen effect&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #001d35; text-align: start;&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div data-ved=&quot;2ahUKEwjVqtrXkdaKAxVkulYBHS5wCbUQo_EKegQIQBAB&quot; data-hveid=&quot;CEAQAQ&quot;&gt;&lt;span data-huuid=&quot;3855121164879518382&quot;&gt;&lt;span&gt;To avoid artifacts, you can save an image in an uncompressed format, such as PSD or TIFF, if you plan to make a lot of changes to it.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 아티팩트의 종류&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;블록 현상(Blockiness)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;설명:&lt;/b&gt; 이미지를 작은 블록 단위로 나누어 처리하는 압축 방식에서 발생. 각 블록의 경계가 뚜렷하게 드러나면서 전체 이미지에 격자무늬 같은 패턴이 나타남.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예시:&lt;/b&gt; JPEG 압축에서 낮은 품질 설정 시 이미지 전체에 블록이 보이는 현상.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;블러(Blur)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;설명:&lt;/b&gt; 이미지의 선명도가 떨어지고 경계가 흐려지는 현상. 이는 고주파 성분이 손실되면서 세부 디테일이 사라지기 때문에 발생.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예시:&lt;/b&gt; 사진을 지나치게 압축하면 인물의 윤곽이 흐릿하게 보일 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;링잉(Ringing)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;설명:&lt;/b&gt; 강한 경계나 선 주변에 물결무늬 같은 흔적이 나타나는 현상. 주로 고주파 성분의 손실이나 부적절한 필터링으로 인해 발생.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예시:&lt;/b&gt; 텍스트나 선이 있는 이미지에서 글자 가장자리 주변에 흰색 또는 검은색의 띠가 생기는 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컨투어링(Contouring)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;설명:&lt;/b&gt; 이미지의 색상이나 명암이 부드럽게 변하지 않고 계단식으로 변하는 현상. 이는 색상이나 밝기 단계를 너무 적게 사용했을 때 나타남.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예시:&lt;/b&gt; 그라데이션이 필요한 부분에서 색상이 급격하게 변해 계단처럼 보이는 것.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아티팩트의 원인&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;손실 압축(Lossy Compression):&lt;/b&gt; JPEG, MPEG 등과 같은 손실 압축 방식은 파일 크기를 줄이기 위해 원본 데이터의 일부를 제거함. 이 과정에서 시각적으로 눈에 띄는 왜곡이 발생할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고주파 성분 손실:&lt;/b&gt; 이미지의 세부 디테일을 담당하는 고주파 성분이 손실되면 블러나 링잉과 같은 아티팩트가 생길 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부적절한 인코딩 파라미터:&lt;/b&gt; 압축률이 너무 높거나 낮은 설정은 다양한 아티팩트를 유발할 수 있음.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;아티팩트의 영향&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;시각적 품질 저하:&lt;/b&gt; 사용자가 이미지를 보았을 때 자연스러움이 감소하고, 원본과 비교하여 품질이 낮아 보일 수 있음&lt;/li&gt;
&lt;li&gt;&lt;b&gt;분석 및 처리 오류:&lt;/b&gt; 컴퓨터 비전이나 이미지 분석 작업에서 아티팩트는 알고리즘의 정확도를 떨어뜨릴 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용자 경험 감소:&lt;/b&gt; 특히 사진이나 비디오 편집, 스트리밍 서비스 등에서 아티팩트는 사용자 만족도를 낮출 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Background/Memo</category>
      <category>Artifacts</category>
      <category>block noise</category>
      <category>blockiness</category>
      <category>블록 노이즈</category>
      <category>블록 현상</category>
      <category>아티팩트</category>
      <category>아티펙트</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/120</guid>
      <comments>https://bpdev.tistory.com/120#entry120comment</comments>
      <pubDate>Thu, 2 Jan 2025 13:03:23 +0900</pubDate>
    </item>
    <item>
      <title>004 몇 개의 의상 조합이 가능한지 찾기</title>
      <link>https://bpdev.tistory.com/117</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2024-10-01 23.56.17 - An illustration of a fashion stylist named Ari in a small, quiet village, drawn in the Art Nouveau style. The scene features elegant, flowing lines an.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rX1GB/btsJRZcdBGz/XMSWmctBvkPPgzKKkZAKz0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rX1GB/btsJRZcdBGz/XMSWmctBvkPPgzKKkZAKz0/img.webp&quot; data-alt=&quot;Image generator 그림. 상업 삽화 많이 그려본 사람이 대충 그린 것 같은 느낌이고만.. 배경 인물들 얼굴 좀 무섭다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rX1GB/btsJRZcdBGz/XMSWmctBvkPPgzKKkZAKz0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrX1GB%2FbtsJRZcdBGz%2FXMSWmctBvkPPgzKKkZAKz0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2024-10-01 23.56.17 - An illustration of a fashion stylist named Ari in a small, quiet village, drawn in the Art Nouveau style. The scene features elegant, flowing lines an.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image generator 그림. 상업 삽화 많이 그려본 사람이 대충 그린 것 같은 느낌이고만.. 배경 인물들 얼굴 좀 무섭다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;패션 마을의 옷장 마법사&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옛날 옛적,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;패션 마을&lt;/b&gt;이라는 곳에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;아리&lt;/b&gt;라는 이름의 옷장 마법사가 살고 있었습니다. 아리는 마을 사람들에게 멋진 옷을 조합해주는 특별한 능력을 가지고 있었죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 날, 마을에 새로운 옷들이 도착했습니다. 아리는 이 옷들을 잘 정리하고, 마을 사람들에게 다양한 스타일을 제안하기로 마음먹었습니다. 옷들은 각각&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;종류&lt;/b&gt;가 있었는데, 예를 들어 &quot;노란 모자&quot;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;머리장식&lt;/b&gt;, &quot;파란 선글라스&quot;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;액세서리&lt;/b&gt;, &quot;초록 터번&quot;도&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;머리장식&lt;/b&gt;에 속했죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아리는 먼저 각 종류별로 옷의 개수를 세기 시작했습니다. 머리장식에는 노란 모자와 초록 터번, 액세서리에는 파란 선글라스가 있었습니다. 그러고 나서, 각 종류별로 하나를 선택하거나 선택하지 않는 경우의 수를 계산했습니다. 예를 들어, 머리장식은 2가지 선택지(노란 모자, 초록 터번)와 선택하지 않는 경우까지 포함하여 총 3가지 경우가 있었고, 액세서리는 1가지 선택지와 선택하지 않는 경우로 총 2가지 경우가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아리는 모든 종류의 경우를 곱한 후, 아무것도 선택하지 않는 경우를 제외했습니다. 이를 통해 마을 사람들이 만들 수 있는 다양한 옷 조합의 수를 알아냈죠. 최종적으로, 아리는 마을 사람들에게 총&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;5가지&lt;/b&gt;의 멋진 옷 조합을 제안할 수 있게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마을 사람들은 아리의 도움으로 매일매일 다른 스타일을 즐기며 행복하게 살았답니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- G&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hash map&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727793471491&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(clothes):
    # 1. Create a hash map to count each type of clothing
    hash_map = {}
    for clothes, type in clothes:
        hash_map[type] = hash_map.get(type, 0) + 1 
        # get(type, 0) : If the type doesn't exist, start count at 0

    # 2. Multiply the number of combinations for each clothing type
    answer = 1
    for type in hash_map:
        answer *= (hash_map[type] + 1)

    # 3. Subtract 1 to exclude the case where nothing is worn
    return answer - 1
    
print(solution([[&quot;yellow_hat&quot;, &quot;headgear&quot;], [&quot;blue_sunglasses&quot;, &quot;eyewear&quot;], [&quot;green_turban&quot;, &quot;headgear&quot;]]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727793482777&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Counter와 reduce&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727793501144&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import Counter
from functools import reduce

def solution(clothes):
    # 1. Count each type of clothing
    counter = Counter([type for clothes, type in clothes])

    # 2. Multiply the combinations (including not wearing an item)
    answer = reduce(lambda x, y: x * (y + 1), counter.values(), 1)
    
    # 3. Subtract 1 to exclude the case of wearing nothing
    return answer - 1

print(solution([[&quot;yellow_hat&quot;, &quot;headgear&quot;], [&quot;blue_sunglasses&quot;, &quot;eyewear&quot;], [&quot;green_turban&quot;, &quot;headgear&quot;]]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727793508343&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignLeft&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/ctjJyC/btsJRBQcB0U/96x6MThkGt9uXSClvJTkR1/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bozyDy/btsJSdOYXlW/ryb94KYflN8k1Y03eUEg61/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/D0WED/btsJSsrk254/sgS8NdokHODmARcIDAGz6k/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/E0bjV/btsJS80dFcI/BLKKj53IAMU8wQr9KkYVu1/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/eFrkne/btsJSsESghn/Man2SxbNgm17t6arLEv7o0/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/72wpn/btsJSFqyB2B/C5KZml3uFggdPsncBIS411/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/nc7O6/btsJSoWUpaQ/mzlFyK3hSkK3M6i5hSPd3k/img.webp&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/RYJQR/btsJROWhhe3/qywQDSPlp3KirxKAws8av1/img.webp&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctjJyC/btsJRBQcB0U/96x6MThkGt9uXSClvJTkR1/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/ctjJyC/btsJRBQcB0U/96x6MThkGt9uXSClvJTkR1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctjJyC/btsJRBQcB0U/96x6MThkGt9uXSClvJTkR1/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctjJyC%2FbtsJRBQcB0U%2F96x6MThkGt9uXSClvJTkR1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bozyDy/btsJSdOYXlW/ryb94KYflN8k1Y03eUEg61/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bozyDy/btsJSdOYXlW/ryb94KYflN8k1Y03eUEg61/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bozyDy/btsJSdOYXlW/ryb94KYflN8k1Y03eUEg61/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbozyDy%2FbtsJSdOYXlW%2Fryb94KYflN8k1Y03eUEg61%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D0WED/btsJSsrk254/sgS8NdokHODmARcIDAGz6k/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/D0WED/btsJSsrk254/sgS8NdokHODmARcIDAGz6k/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D0WED/btsJSsrk254/sgS8NdokHODmARcIDAGz6k/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD0WED%2FbtsJSsrk254%2FsgS8NdokHODmARcIDAGz6k%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E0bjV/btsJS80dFcI/BLKKj53IAMU8wQr9KkYVu1/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/E0bjV/btsJS80dFcI/BLKKj53IAMU8wQr9KkYVu1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E0bjV/btsJS80dFcI/BLKKj53IAMU8wQr9KkYVu1/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE0bjV%2FbtsJS80dFcI%2FBLKKj53IAMU8wQr9KkYVu1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eFrkne/btsJSsESghn/Man2SxbNgm17t6arLEv7o0/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/eFrkne/btsJSsESghn/Man2SxbNgm17t6arLEv7o0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eFrkne/btsJSsESghn/Man2SxbNgm17t6arLEv7o0/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeFrkne%2FbtsJSsESghn%2FMan2SxbNgm17t6arLEv7o0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/72wpn/btsJSFqyB2B/C5KZml3uFggdPsncBIS411/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/72wpn/btsJSFqyB2B/C5KZml3uFggdPsncBIS411/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/72wpn/btsJSFqyB2B/C5KZml3uFggdPsncBIS411/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F72wpn%2FbtsJSFqyB2B%2FC5KZml3uFggdPsncBIS411%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nc7O6/btsJSoWUpaQ/mzlFyK3hSkK3M6i5hSPd3k/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/nc7O6/btsJSoWUpaQ/mzlFyK3hSkK3M6i5hSPd3k/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nc7O6/btsJSoWUpaQ/mzlFyK3hSkK3M6i5hSPd3k/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnc7O6%2FbtsJSoWUpaQ%2FmzlFyK3hSkK3M6i5hSPd3k%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RYJQR/btsJROWhhe3/qywQDSPlp3KirxKAws8av1/img.webp&quot; data-url=&quot;https://blog.kakaocdn.net/dn/RYJQR/btsJROWhhe3/qywQDSPlp3KirxKAws8av1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RYJQR/btsJROWhhe3/qywQDSPlp3KirxKAws8av1/img.webp&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRYJQR%2FbtsJROWhhe3%2FqywQDSPlp3KirxKAws8av1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;[슬라이드 이미지] AI쪼를 없애는 게 기술이 되지 싶다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>combinations</category>
      <category>counter</category>
      <category>hash map</category>
      <category>PYTHON</category>
      <category>reduce</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/117</guid>
      <comments>https://bpdev.tistory.com/117#entry117comment</comments>
      <pubDate>Tue, 1 Oct 2024 23:58:25 +0900</pubDate>
    </item>
    <item>
      <title>003 소수 찾기</title>
      <link>https://bpdev.tistory.com/116</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2024-09-28 20.45.02 - Several small paper scraps scattered across a surface, each with a single-digit number written on them. The numbers are handwritten in bold, simple fo.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX9EMB/btsJQfeHjpf/jB6LWTunRKSXCCFik6RXL1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX9EMB/btsJQfeHjpf/jB6LWTunRKSXCCFik6RXL1/img.webp&quot; data-alt=&quot;Image generator 사용해서 뽑은 이미지. 숫자 아닌 거 섞여 있음. 요즘 GPT 내가 쓰는 말투에 맞춰 대꾸하는 게 재밌다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX9EMB/btsJQfeHjpf/jB6LWTunRKSXCCFik6RXL1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX9EMB%2FbtsJQfeHjpf%2FjB6LWTunRKSXCCFik6RXL1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2024-09-28 20.45.02 - Several small paper scraps scattered across a surface, each with a single-digit number written on them. The numbers are handwritten in bold, simple fo.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Image generator 사용해서 뽑은 이미지. 숫자 아닌 거 섞여 있음. 요즘 GPT 내가 쓰는 말투에 맞춰 대꾸하는 게 재밌다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #953b34;&quot;&gt;문제 출처 :&amp;nbsp;&lt;a style=&quot;color: #953b34;&quot; href=&quot;https://youtu.be/m3kCKV8oc1g?si=WTrr9omSekICyslD&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/m3kCKV8oc1g?si=WTrr9omSekICyslD&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 자리 숫자가 적힌 종이 조각이 흩어져 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흩어진 종이조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Loop 활용&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 숫자 조합&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 소수가 아닌 수 제거 : 에라토스테네스의 체 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. permutation, map, set 등을 활용하여 손쉽게 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1727576767152&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from itertools import permutations

def solution(numbers):
    prime_set = set()

    # 1. Make all possible number combinations from the given numbers 
    for i in range(len(numbers)):
        # print(list(numbers))
        numbers_permutation = permutations(list(numbers), i + 1)
        # print(list(numbers_permutation))
        # print(list(map(&quot;&quot;.join, numbers_permutation)))
        # print(list(map(int, map(&quot;&quot;.join, numbers_permutation))))
        numbers_perm_list = map(int, map(&quot;&quot;.join, numbers_permutation))
        prime_set |= set(numbers_perm_list)
    # print(prime_set)

    # 2. Check if the number is prime
    prime_set -= set(range(0, 2))
    lim = int(max(prime_set) ** 0.5) + 1
    for i in range(2, lim):
        prime_set -= set(range(i * 2, max(prime_set) + 1, i))
    return len(prime_set)

print(solution(&quot;17&quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1727576773374&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;☆ 에라토스테네스의 체 멋진 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.algodale.com/algorithms/sieve-of-eratosthenes/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.algodale.com/algorithms/sieve-of-eratosthenes/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1727576959094&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;알고달레&quot; data-og-description=&quot;알고리즘 입문자를 위한 달레의 친절한 안내서&quot; data-og-host=&quot;www.algodale.com&quot; data-og-source-url=&quot;https://www.algodale.com/algorithms/sieve-of-eratosthenes/&quot; data-og-url=&quot;https://www.algodale.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UaP4i/hyXaHaj3Jy/kN9nYkExQ7GFxmDKK7V5Fk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/tudNL/hyW6wuQfk9/q2KC4Iwvkoh1yzDaISNvZK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.algodale.com/algorithms/sieve-of-eratosthenes/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.algodale.com/algorithms/sieve-of-eratosthenes/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UaP4i/hyXaHaj3Jy/kN9nYkExQ7GFxmDKK7V5Fk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/tudNL/hyW6wuQfk9/q2KC4Iwvkoh1yzDaISNvZK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;알고달레&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 입문자를 위한 달레의 친절한 안내서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.algodale.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;재귀 활용&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나갔다 와서 계속 ..&lt;/p&gt;</description>
      <category>Python</category>
      <category>map</category>
      <category>permutation</category>
      <category>PYTHON</category>
      <category>set</category>
      <category>Sieve of Eratosthenes</category>
      <category>소수 제거</category>
      <category>에라토스테네스의 체</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/116</guid>
      <comments>https://bpdev.tistory.com/116#entry116comment</comments>
      <pubDate>Sun, 29 Sep 2024 11:36:17 +0900</pubDate>
    </item>
    <item>
      <title>002 전화번호 목록</title>
      <link>https://bpdev.tistory.com/115</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2024-09-27 02.29.03 - A clean and neatly printed phone directory page with clear and sharp text, organized in columns. The names and phone numbers are aligned perfectly, wi.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkFgSa/btsJNQssff6/Z3r739mmImVdm33Wk47Sf0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkFgSa/btsJNQssff6/Z3r739mmImVdm33Wk47Sf0/img.webp&quot; data-alt=&quot;기묘하다 기묘해 부조리한 ㅎㅎ DALL-E Image&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkFgSa/btsJNQssff6/Z3r739mmImVdm33Wk47Sf0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkFgSa%2FbtsJNQssff6%2FZ3r739mmImVdm33Wk47Sf0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2024-09-27 02.29.03 - A clean and neatly printed phone directory page with clear and sharp text, organized in columns. The names and phone numbers are aligned perfectly, wi.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기묘하다 기묘해 부조리한 ㅎㅎ DALL-E Image&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전화번호에 적힌 전화번호 중,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 번호가 다른 번호의 접두어인 경우가 있는지 확인해야 함&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접두어이면 False, 아니면 True&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전화번호부에 적힌 전화번호를 담은 배열phone_book이&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;solution 함수의 매개 변수로 주어질 때,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 번호가 다른 번호의 접두어인 경우가 있으면 False를&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지 않으면 True를 return 하도록 solution 함수를 작성해 주세요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 왜 하필이면 전화번호 목록이지? 접두어가 있는지 확인할 일이 뭐가 있지..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;비교할 첫 번째 전화번호를 선택하고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;비교할 두 번째 전화번호를 선택하고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;startswith 함수를 사용해 서로가 서로의 접두어인지 확인한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727369287668&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(phone_book):
    # 1. Sort the phone book 
    for i in range(len(phone_book)):
        # 2. Compare the current phone number with the next phone number 
        for j in range(i + 1, len(phone_book)): 
            # 3. If the next phone number starts with the current phone number, return False
            if phone_book[i].startswith(phone_book[j]):
                return False
            if phone_book[j].startswith(phone_book[i]):
                return False
    return True
print(solution([&quot;12&quot;, &quot;213&quot;, &quot;1232&quot;]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727369303307&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;False&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이렇게 짜면 시간이.. 초과된다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;번호가 많을 때는 .........&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;줄이는 방법은 &lt;b&gt;Sort&lt;/b&gt;를&amp;nbsp;활용하는 것.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이중 루프를 한 번으로 줄이기만 해도 훨씬 줄어들고.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단방향으로만 확인하면서 서로 접두어인지 확인할 수 있다면 더 줄어든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1727370094698&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(phone_book):
    # 1. Sort the phone book
    phone_book.sort()
    # 2. Compare the current phone number with the next phone number 
    for i in range(len(phone_book) - 1):
        # 3. If the next phone number starts with the current phone number, return False 
        if phone_book[i] == phone_book[i + 1][:len(phone_book[i])]:
            return False
    return True
print(solution([&quot;12&quot;, &quot;2132&quot;, &quot;1232&quot;]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727370113710&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;False&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;zip&lt;/b&gt;을 사용해보자!&lt;/p&gt;
&lt;pre id=&quot;code_1727370572104&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(phone_book):
    # 1. Sort the phone book
    phone_book.sort()
    print(phone_book)
    print(phone_book[1:])
    print(list(zip(phone_book, phone_book[1:])))
    # 2. Compare the current phone number with the next phone number
    for p1, p2 in zip(phone_book, phone_book[1:]):
        # 3. If the next phone number starts with the current phone number, return False
        if p2.startswith(p1):
            return False
    return True
print(solution([&quot;12&quot;, &quot;2132&quot;, &quot;1232&quot;]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727370863051&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;['12', '1232', '2132']
['1232', '2132']
[('12', '1232'), ('1232', '2132')]
False&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hash&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Key와 Value로 만들어 보자&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Key = phone_number&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Value = 1을 갖는 Hash map을 만들어 준다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Key&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&quot;12&quot;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&quot;6789&quot;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&quot;6&quot;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 번호의 접두어가 Hash map에 존재하는지 확인한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접두어를 찾아야 하기 때문에, 기존 전화번호의 일부를 Hash map에서 찾으면 된다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1727370311917&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(phone_book):
    # 1. Make a hash map
    hash_map = {}
    for phone_number in phone_book:
        hash_map[phone_number] = 1

    # 2. Compare the current phone number with the next phone number
    for phone_number in phone_book:
        prefix = &quot;&quot;
        for number in phone_number:
            prefix += number
            if prefix in hash_map and prefix != phone_number:
                return False
    return True
print(solution([&quot;12&quot;, &quot;2132&quot;, &quot;1232&quot;]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727370324161&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;False&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2024-09-27 02.28.06 - A printed phone directory page with neatly organized names and phone numbers. The layout is clean, resembling a typical old-fashioned phone book, with.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ew28Pl/btsJOYv9mA6/SE2xIJzvvV2AKjJchMDK41/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ew28Pl/btsJOYv9mA6/SE2xIJzvvV2AKjJchMDK41/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ew28Pl/btsJOYv9mA6/SE2xIJzvvV2AKjJchMDK41/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Few28Pl%2FbtsJOYv9mA6%2FSE2xIJzvvV2AKjJchMDK41%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2024-09-27 02.28.06 - A printed phone directory page with neatly organized names and phone numbers. The layout is clean, resembling a typical old-fashioned phone book, with.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2024-09-27 02.30.42 - A subtle, hand-written phone number list on a slightly crumpled piece of white paper, with the text and numbers faint or partially obscured. The numbe.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ujX4w/btsJOyYWuLY/fubRbkskhM9XQdO3vTq0e1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ujX4w/btsJOyYWuLY/fubRbkskhM9XQdO3vTq0e1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ujX4w/btsJOyYWuLY/fubRbkskhM9XQdO3vTq0e1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FujX4w%2FbtsJOyYWuLY%2FfubRbkskhM9XQdO3vTq0e1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2024-09-27 02.30.42 - A subtle, hand-written phone number list on a slightly crumpled piece of white paper, with the text and numbers faint or partially obscured. The numbe.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2024-09-27 02.30.33 - A hand-written phone number list on a simple piece of white paper. The numbers are written in neat, casual handwriting with names next to each number.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xnC9f/btsJNsr8FvX/BYxaalIk9nTOZnjJ7z3TUK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xnC9f/btsJNsr8FvX/BYxaalIk9nTOZnjJ7z3TUK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xnC9f/btsJNsr8FvX/BYxaalIk9nTOZnjJ7z3TUK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxnC9f%2FbtsJNsr8FvX%2FBYxaalIk9nTOZnjJ7z3TUK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2024-09-27 02.30.33 - A hand-written phone number list on a simple piece of white paper. The numbers are written in neat, casual handwriting with names next to each number.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>hash</category>
      <category>PYTHON</category>
      <category>sorting</category>
      <category>zip</category>
      <author>bpDev</author>
      <guid isPermaLink="true">https://bpdev.tistory.com/115</guid>
      <comments>https://bpdev.tistory.com/115#entry115comment</comments>
      <pubDate>Fri, 27 Sep 2024 02:39:41 +0900</pubDate>
    </item>
  </channel>
</rss>