[{"content":"1. 다층 퍼셉트론 분류 모델(MLP)의 등장 퍼셉트론 분류 모델은 데이터 분포가 선형 분리 가능할 때만 결정 경계의 수렴을 보장한다는 한계가 있었습니다. 하지만, 다층 퍼셉트론 모델은 이러한 선형 분리가 불가능한 데이터 분포 문제를 해결했습니다. 퍼셉트론(Perceptron) 개념의 등장(Rosenblatt, 1958), 단층 퍼셉트론의 한계(Minsky \u0026amp; Papert, 1969), 그리고 역전파(Backpropagation) 알고리즘 개발(Rumelhart et al., 1986)을 순차적으로 살펴보면 선형 분리 문제 해결 과정을 파악할 수 있습니다.\n1.1 퍼셉트론(Perceptron) 등장 다층 퍼셉트론 등장의 배경을 이해하기 위해, 초기 퍼셉트론 개념을 다룬 논문을 먼저 살펴보겠습니다.\n1958년 Rosenblatt는 「The Perceptron: A probabilistic model for information storage and organization in the brain」이라는 논문에서 인간과 같은 고등 유기체(higher organisms)의 지각, 회상, 사고 능력을 이해하기 위한 세 가지 질문을 제시했습니다.\n생물학적 시스템은 물리적 세계에 대한 정보를 어떻게 감지하거나 탐지하는가? (How is information about the physical world sensed, or detected, by the biological system?) 정보는 어떤 형태로 저장되거나 기억되는가? (In what form is information stored, or remembered?) 저장소나 기억 속에 담긴 정보는 인식과 행동에 어떻게 영향을 미치는가? (How does information contained in storage, or in memory, influence recognition and behavior?) Rosenblatt(1958)는 신경계의 코드와 배선도(wiring diagram)를 이해하면 유기체가 무엇을 기억하는지 정확히 밝혀낼 수 있다고 주장했습니다. 뇌의 정보 처리 방식을 모방한 확률론적 모델인 퍼셉트론(perceptron)을 제시하여, 정보가 뇌에 어떻게 저장되고(기억), 저장된 정보가 인식과 행동에 어떻게 영향을 미치는지 퍼셉트론의 개념을 통해 설명하고자 했습니다.\n구체적으로, 기억이 뉴런 간에 연결(connection) 또는 경로의 형태로 저장된다는 연결주의(connectionist)를 제시했습니다. 뇌는 자극의 이미지를 직접 저장하는 대신, 특정 자극이 특정 반응을 유발하도록 신경망의 연결 강도가 변화하는 방식으로 학습한다는 것입니다. Rosenblatt(1958)가 주장한 퍼셉트론 모델은 세 부분으로 구성됩니다.\n첫 번째, S-유닛(감각 유닛, Sensory units) 은 망막과 같이 외부 자극을 받아들이는 센서입니다. 두 번째, A-유닛(연합 유닛, Association units) 은 S-유닛으로부터 신호를 받아 처리하는 중간 단계에 위치하며, 이 유닛들은 S-유닛 및 다른 A-유닛들과 무작위로 연결되어 있습니다. 세 번째, R-유닛(반응 유닛, Response units) 은 A-유닛들로부터 신호를 받아 출력을 결정합니다. 학습은 A-유닛과 R-유닛의 연결 강도 및 A-유닛의 가치(value)를 조정함으로써 이루어집니다. 특정 자극에 대해 원하는 반응이 발생했을 때, 해당 반응에 기여한 A 유닛들의 가치(value)를 강화(증가)시킵니다. 이러한 가치 조정 방식에 따라 알파(α), 베타(β), 감마(γ) 시스템 세 가지를 비교했으며, 특히 활성 유닛이 비활성 유닛의 가치(value)를 빼앗아 전체 가치 총합을 일정하게 유지하는 감마(γ) 시스템의 역할이 중요하다고 보았습니다.\n또한, 기억은 특정 뉴런 하나에 저장되는 것이 아니라 시스템 전체의 연결 강도에 분산되어 저장된다는 분산 기억을 주장하였습니다. 일반화 학습에 대해서도 제기하였는데, 가치 붕괴와 같은 특정 조건에서는 외부의 정답 지시 없이도 단순한 자극에 노출되는 것만으로 환경 내의 자극 클래스(사각형 또는 원)를 구별하는 자발적 개념 형성 능력을 보인다고 제시하였습니다. 보상과 처벌에 해당하는 긍정적/부정적 강화를 통해 시행착오 학습이 가능하다고 주장합니다. 하지만 퍼셉트론은 패턴 인식, 연상 학습, 선택적 주의 등은 가능하지만, A의 왼쪽에 있는 물체와 같이 자극 간의 관계를 추상화하는 고차원적 기능에는 한계를 보인다고 지적했습니다(Rosenblatt, 1958).\n1.2 Parity 문제 Minsky와 Papert는 1969년에 「Perceptrons: An Introduction to Computational Geometry」라는 책을 출간했습니다. 이 책은 가장 단순한 학습 기계를 퍼셉트론이라고 정의했으며, 병렬 계산, 패턴 인식, 지식 표현, 학습과 관련하여 수학적으로 증명하였습니다.\nMinsky \u0026amp; Papert(1969)는 단층 퍼셉트론이 패리티(Parity) 문제를 수학적으로 해결할 수 없음을 증명하였습니다. 패리티 문제란 ON 상태인 입력의 개수가 짝수인지 홀수인지를 판별하는 문제입니다.\n패리티 함수(Parity Function)는 다음과 같이 정의됩니다.\n\\[\\psi_{\\text{PARITY}}(X) = \\lceil\\, |X| \\text{ is an odd number} \\,\\rceil\\] 정리(Theorem)는 다음과 같습니다.\n\\[\\psi_{\\text{PARITY}} \\text{ is of order } |R|\\] 패리티 문제의 대표적인 예시인 XOR 문제는 입력이 2개일 때의 홀수 판별 문제입니다. 패리티 함수는 R의 전체 크기와 동일한 차수(order)를 가집니다. 따라서 단층 퍼셉트론은 XOR 문제에서 차수가 2보다 작은 1이므로 패리티 문제를 해결할 수 없습니다.\n구체적으로,\n(0, 0)은 켜진 입력이 없는 0인 짝수이기 때문에 패리티는 홀수이므로 0이라는 출력이 나오고, (0, 1)은 켜진 입력이 하나 있는 홀수이기 때문에 1이라는 출력이 나오고, (1, 0)은 켜진 입력이 하나 있는 홀수이기 때문에 1이라는 출력이 나오고, (1, 1)은 켜진 입력이 두 개 있는 짝수이기 때문에 0이라는 출력이 나옵니다. Theorem은 전체 입력 공간을 \\(|R|\\) , 즉 총 입력 개수로 정의하므로, 총 입력이 2개(\\(|R| = 2\\) )인 경우 패리티 문제를 해결하려면 최소 2차의 감지기(\\(\\varphi\\) )가 필요합니다. 이는 퍼셉트론 내부에 입력 2개를 동시에 처리할 수 있는 감지기(\\(\\varphi\\) )가 있어야 함을 의미합니다.\n당시의 퍼셉트론은 차수가 1로 매우 낮고 지역적 감지기들로 구성된 기계였기 때문에, XOR과 같은 고차원적인 문제를 풀 수 없다고 증명했습니다.\n하지만, 1988년에 나온 확장판 에필로그에서는 PDP(Parallel Distributed Processing) 연구 그룹이 다층 퍼셉트론으로 문제를 해결한 사실(\u0026ldquo;multilayer linear threshold networks are potentially much more powerful than single layer perceptrons.\u0026rdquo;)을 언급하며, 다층 네트워크 구조가 문제 규모가 커질수록 계산 비용이 기하급수적으로 증가하고, 중간층 유닛들도 감바 퍼셉트론(Gamba Perceptron) 구조이며, 학습에 필요한 시도 횟수가 너무 많아 실용적이지 않다는 점을 지적했습니다. 즉, 다층 퍼셉트론으로 문제를 해결할 수 있지만 이에 대해 회의적인 입장을 드러냈습니다(Minsky \u0026amp; Papert, 1988).\n1.3 Back Propagation 등장 David Rumelhart, Geoffrey Hinton, Ronald Williams(1986)는 「Learning representations by back-propagating errors」라는 내용을 Nature에 발표했습니다. 이 논문은 다층 퍼셉트론 구조에서 중간층의 가중치를 학습시키는 방법에 대한 것으로, 은닉층의 개수와 상관없이 오차를 역전파시켜 모든 가중치를 자동으로 학습시킬 수 있는 수학적 방법을 제시했습니다.\n학습 과정은 은닉 유닛(hidden units)을 도입하였습니다. 입력과 출력 행동에서 은닉 유닛들이 무엇을 표현(represent)하는지 구축하고 어떤 유닛이 활성화되어야 하는지가 학습 과정입니다. 순방향 전파(Forward Pass), 오차 최소화(경사 하강법), 역방향 전파(Backward Pass), 그리고 가중치 업데이트로 구성되며, 관련 수식은 다음과 같습니다.\n순방향 전파(Forward Pass) 유닛 \\(j\\) 로 들어오는 총 입력 \\(x_j\\) 은 \\(j\\) 에 연결된 유닛들의 출력 \\(y_i\\) 과 이 연결들의 가중치 \\(w_{ji}\\) 의 선형 함수(linear function)입니다. 추가로, 각 유닛에는 편향(biases)을 부여합니다. 또한, 비선형 함수(non-linear function)인 실수 값의 \\(y_j\\) 이 있습니다.\n\\[x_j = \\sum_i y_i w_{ji} \\tag{1}\\] \\[y_i = \\frac{1}{1 \u0026#43; e^{-x_j}} \\tag{2}\\] 오차 최소화(경사 하강법) 총 오차(total error) \\(E\\) 는 모든 사례(\\(c\\) )와 모든 출력 유닛(\\(j\\) )에 대해 실제 출력(\\(y\\) )와 원하는 정답(\\(d\\) )을 비교해서 계산한 제곱합 오차(Sum of Squared Errors, SSE)입니다.\n\\[E = \\frac{1}{2} \\sum_c \\sum_j \\left( y_{j,c} - d_{j,c} \\right)^2 \\tag{3}\\] 오차 \\(E\\) 를 최소화하는 방법으로는 경사 하강법(gradient descent)을 사용하며, 각 가중치(\\(w\\) )에 대한 \\(E\\) 의 편도 함수(partial derivative), 즉, 기울기(\\(\\partial E / \\partial w\\) )를 계산합니다.\n역방향 전파(Backward Pass) 역전파는 순방향, 역방향 패스로 두 번의 계산이 있습니다.\n역방향 패스는 출력 유닛의 오차(\\(\\partial E / \\partial y_j\\) )를 계산하는 것으로 시작하며, 방정식 (3)을 미분하여 (4)를 얻습니다.\n\\[\\frac{\\partial E}{\\partial y_j} = y_j - d_j \\tag{4}\\] 다음으로, 연쇄 법칙(chain rule)을 적용하여, 출력 유닛의 총 입력(\\(x_j\\) )이 오차에 미치는 영향(\\(\\partial E / \\partial x_j\\) )을 계산합니다. 방정식 (2)를 미분한 값을 사용하면 다음의 (5)번 식이 됩니다.\n\\[\\frac{\\partial E}{\\partial x_j} = \\frac{\\partial E}{\\partial y_j} \\cdot \\frac{dy_j}{dx_j} = \\frac{\\partial E}{\\partial y_j} \\, y_j (1 - y_j) \\tag{5}\\] 가중치(\\(w_{ji}\\) )가 오차에 미치는 영향(\\(\\partial E / \\partial w_{ji}\\) )은 연쇄 법칙에 따라 다음 (6)번 방정식과 같습니다.\n\\[\\frac{\\partial E}{\\partial w_{ji}} = \\frac{\\partial E}{\\partial x_j} \\cdot \\frac{\\partial x_j}{\\partial w_{ji}} = \\frac{\\partial E}{\\partial x_j} \\, y_i \\tag{6}\\] 이 오차를 이전 계층(유닛 \\(i\\) )으로 거꾸로 전파합니다. 유닛 \\(i\\) 의 오차는 (\\(\\partial E / \\partial y_i\\) ) 해당 유닛이 영향을 미친 모든 다음 층 유닛들(\\(j\\) )의 오차 기여도를 합산한 값입니다.\n\\[\\frac{\\partial E}{\\partial y_i} = \\sum_j \\frac{\\partial E}{\\partial x_j} \\, w_{ji} \\tag{7}\\] 이처럼 마지막 층에서부터 맨 처음 층까지 반복적으로(recursively) 계산해서 모든 가중치의 기울기를 계산합니다.\n가중치 업데이트 학습률(learning rate, epsilon, \\(\\epsilon\\) )을 계산해서 가중치를 업데이트합니다.\n\\[\\Delta w = -\\epsilon \\left( \\frac{\\partial E}{\\partial w} \\right) \\tag{8}\\] 방정식 (9)는 모멘텀(momentum)을 활용하여 방정식 (8)을 개선한 것으로, 현재의 기울기뿐만 아니라 직전의 가중치 변화량(\\(\\Delta w(t-1)\\) )을 함께 고려하는 방식입니다. (알파값은 모멘텀 상수)\n\\[\\Delta w(t) = -\\epsilon \\frac{\\partial E}{\\partial w(t)} \u0026#43; \\alpha \\, \\Delta w(t-1) \\tag{9}\\] Rumelhart(1986)는 대칭성 감지, 가계도 문제와 같은 동형성 학습(기존 가계도의 부모-자녀 관계와 같이 다른 가계도에서도 해당 관계를 추론할 수 있는지 여부), 순환 네트워크 문제에 이러한 은닉층이 포함된 다층 레이어 구조를 적용하여 퍼셉트론이 내부 학습을 통해 문제를 해결할 수 있다고 논문에서 제시했습니다.\n예를 들어, Rumelhart(1986)의 대칭성 문제를 살펴볼 수 있습니다. 이 문제는 입력층과 출력층만으로는 절대 해결할 수 없으며 반드시 중간에 은닉층(hidden layer)이 필요합니다. 역전파 알고리즘이 스스로 복잡한 은닉층의 가중치(1:2:4 비율)를 찾아내는 것을 볼 수 있습니다. 은닉 유닛(hidden unit)이 2개만 있어도 대칭성 문제를 해결할 수 있음이 확인되었습니다(Rumelhart, Hinton, Williams, 1986).\n구체적으로, 해당 이미지는 입력 벡터의 좌우 대칭(mirror symmetry)을 감지하도록 학습한 네트워크를 보여줍니다. 입력 유닛에서 은닉 유닛으로 가는 선 위쪽에는 각 가중치가 적혀 있으며, 노드 안에는 편향(bias) 값이 약 -11로 설정되어 있습니다. 파라미터(parameter) 값은 \\(\\epsilon = 0.1\\) 이고, \\(\\alpha = 0.9\\) 이며, 초기 가중치는 무작위로 -0.3 ~ 0.3 사이로 설정했습니다. 입력이 2개가 들어오면 각 입력이 서로 대칭인지 아닌지 가중치를 곱하고 편향을 더하여 결정합니다. 예를 들어 입력 유닛이 (0, 0)일 때, 가중치는 14.2 × 0 + 0 × -14.2 - 11 = -11으로 음수가 되어 활성화 함수를 거쳐 비활성화 상태가 됩니다. 이 때 출력 유닛에서는 0 × -8.8 + 0 × -8.8 + 64 = 64라는 양의 수로 \u0026lsquo;on\u0026rsquo;이 출력됩니다(이는 (1, 1)이 입력될 때도 동일합니다). 입력 유닛이 (1, 0)으로 들어가 활성화 함수를 거쳐 은닉 유닛 중 하나가 \u0026lsquo;on\u0026rsquo;으로 출력되면 (1 × -8.8) + (0 × -8.8) + 64 = 55.2로 64보다 적은 숫자가 되어 출력 유닛에서 \u0026lsquo;off\u0026rsquo;로 나타납니다.\n은닉 구조 및 가중치 업데이트를 통해 가계도 문제 역시 은닉 유닛이 단순 암기가 아닌 영국인과 이탈리안 가계도의 공통된 추상적인 구조(동형성)를 스스로 학습한다는 것, 순환망에도 적용할 수 있음을 확인할 수 있습니다. 주의할 점으로 모델이 학습할 때 전역 최소값(global minimum)이 아닌 지역 최소값(local minimum)에 빠져 학습이 멈출 수 있지만, Rumelhart(1986)는 경험상 네트워크에 연결(가중치)를 충분히 많이 만들어두면 이 문제는 거의 일어나지 않는다고 주장합니다.\n종합하면, 다층 퍼셉트론(MultiLayer Perceptron; MLP)은 sigmoid, tanh, ReLU 등과 같은 비선형 활성화 함수를 적용하여 입력 공간을 비선형적으로 변환하는 방식을 제시합니다. 그리고 은닉 층(Hidden Layer)의 각 노드에서 서로 다른 선형 결정 경계를 학습하여, 입력을 고차원 특징 공간으로 매핑하는 차원 확장을 수행합니다. 이는 원래 공간에서는 선형 분리가 불가능한 데이터 분포도 은닉층을 통과하며 고차원 공간에서 선형 분리가 가능하도록 해결하는 원리입니다.\n2. 다층 퍼셉트론 분류 모델의 구조 다층 퍼셉트론 분류 모델의 구조의 예시로 XOR을 풀어보겠습니다. Ian Goodfellow(2016)가 제시한 XOR 문제 해결을 위한 다층 퍼셉트론 분류 모델의 구조는 다음과 같습니다.\nXOR 문제를 풀기 위한 신경망을 두 가지 스타일로 표현할 수 있습니다. 그림 6의 왼쪽은 신경망의 각 입력 노드들, 은닉 노드들을 표현한 것이고, 오른쪽은 간결하게 표현한 스타일입니다.\n\\[f(x; W, c, w, b) = w^\\top \\max\\lbrace 0, W^\\top x \u0026#43; c \\rbrace \u0026#43; b\\] Goodfellow(2016)는 신경망 공식을 위와 같이 정의했습니다. 매개변수 \\(W, c, w, b\\) 는 각 층의 가중치, 편향, 가중치, 편향값을 나타냅니다. 추가적으로 Goodfellow(2016)는 ReLU 활성화 함수(\\(g(z) = \\max\\lbrace 0, z \\rbrace\\) )가 현대 신경망에서 기본적으로 권장된다고 제시합니다.\nXOR 문제를 풀기 위해, 매개변수 \\(W = [[1, 1], [1, 1]]\\) 로 설정하여 입력 공간을 변환하는데, 해당 가중치는 두 입력의 합을 계산합니다(\\(x_1 \u0026#43; x_2\\) ).\n매개변수 \\(c = [0, -1]\\) 로 각 은닉 뉴런의 편향을 다르게 설정하였습니다. 첫 번째 은닉 뉴런은 편향이 0이므로, \\(h_1 = \\text{ReLU}(x_1 \u0026#43; x_2 \u0026#43; 0)\\) 이 되어 입력의 합을 봅니다. 따라서 (0, 0), (0, 1), (1, 0), (1, 1) 입력 값은 첫 번째 은닉 뉴런을 통과한 결과 값으로 0, 1, 1, 2가 나옵니다.\n두 번째 은닉 뉴런은 \\(h_2 = \\text{ReLU}(x_1 \u0026#43; x_2 - 1)\\) 으로 편향으로 -1이 들어가 임계값이 1이 됩니다. 따라서 (0, 0), (0, 1), (1, 0), (1, 1) 입력 값은 두 번째 은닉 뉴런을 통과한 결과 값으로 0, 0, 0, 1이 나옵니다. 즉, 입력 값이 모두 1인 경우에만 두 번째 은닉 뉴런이 활성화되는 것을 알 수 있습니다.\n매개변수 \\(w = [1, -2]\\) 로 설정하고 편향 \\(b\\) 는 0입니다. 결과값 \\(y\\) 는 \\(h_1 - 2 h_2 \u0026#43; 0\\) 으로 나타낼 수 있고 \\([1, -2]\\) 로 가중치가 설정된 이유는 결과값을 0 또는 1로 제한하기 때문입니다.\n구체적으로 계산해 보면 다음과 같습니다.\n입력 [0, 0]은 가중치 행렬이 곱해져서 [0, 0]이 되고, 편향(bias) 값인 \\(c\\) 를 더하면 [0, -1]이 됩니다. ReLU 함수(\\(f(z) = \\max\\lbrace 0, z \\rbrace\\) )를 거치면 [0, 0]이 되며, 최종 결과값은 \\(y = 0 - 2 \\times 0 \u0026#43; 0 = 0\\) 이 나옵니다. 입력 [0, 1]은 가중치 행렬 \\(W\\) ([[1,1], [1, 1]])를 곱하면 [1, 1]이 되고, 편향 \\(c\\) 를 더하면 [1, 0]이 됩니다. ReLU를 통과해도 [1, 0]이며, 최종 결과값은 \\(y = 1 - 2 \\times 0 \u0026#43; 0 = 1\\) 이 나옵니다. 입력 [1, 0]도 동일한 결과가 나옵니다. 입력 [1, 1]은 가중치 행렬 \\(W\\) 이 곱해지면 [2, 2]가 되고, 편향 \\(c\\) 를 더하면 [2, 1]이 됩니다. ReLU를 통과해도 [2, 1]이며, 최종 결과값은 \\(y = 2 - 2 \\times 1 \u0026#43; 0 = 0\\) 이 나옵니다. 이처럼 최종 출력은 [0, 1, 1, 0]이 되어 선형 분리할 수 없었던 XOR 문제가 해결되는 것을 확인할 수 있습니다.\n추가로, 이러한 다층 퍼셉트론 모델 구조를 코드로 구현할 수 있습니다.\nclass XORNetwork: def __init__(self): self.W1 = np.array([[1, 1], [1, 1]]) # 첫 번째 층 가중치 (2x2) self.c = np.array([0, -1]) # 첫 번째 층 편향 self.w2 = np.array([1, -2]) # 두 번째 층 가중치 (2x1) self.b = 0 # 두 번째 층 편향 def relu(self, x): return np.maximum(0, x) # ReLU 함수 def forward(self, X): z1 = np.dot(X, self.W1) + self.c # 첫 번째 층 구현 z1 = XW + c h1 = self.relu(z1) # 활성화 함수 ReLU 통과 y = np.dot(h1, self.w2) + self.b # 두 번째 층 출력값 y = h1 * w2 + b return y # output 결과값 입력 값인 X를 넣은 후 출력 과정은 다음과 같습니다.\n# XOR 입력 X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) # 계산 과정 상세 입력 (0,0): z = [0, 0] @ [[1,1],[1,1]] + [0,-1] = [ 0, -1] h = ReLU([ 0, -1]) = [0, 0] # hidden layer y = [0, 0] @ [1,-2] + 0 = 0 입력 (0,1): z = [0, 1] @ [[1,1],[1,1]] + [0,-1] = [1, 0] h = ReLU([1, 0]) = [1, 0] # hidden layer y = [1, 0] @ [1,-2] + 0 = 1 입력 (1,0): z = [1, 0] @ [[1,1],[1,1]] + [0,-1] = [1, 0] h = ReLU([1, 0]) = [1, 0] # hidden layer y = [1, 0] @ [1,-2] + 0 = 1 입력 (1,1): z = [1, 1] @ [[1,1],[1,1]] + [0,-1] = [2, 1] h = ReLU([2, 1]) = [2, 1] # hidden layer y = [2, 1] @ [1,-2] + 0 = 0 시각적으로 표현하면 \\(x_1, x_2\\) 의 원래 공간은 선형 분리가 불가능했습니다. ReLU 활성화 함수를 활용해 은닉층 \\(h_1, h_2\\) 으로 변환된 공간은 다음과 같이 선형 분리가 가능하도록 나뉘어집니다.\n이와 같이 입력층, 은닉층 1개, 출력층 1개로 구성된 다층 퍼셉트론 모델 구조를 작성하여 오차가 0인 깔끔한 답이 산출되었습니다. 현실의 문제들은 좀 더 복잡하기 때문에 이처럼 정확하고 깔끔한 값이 나오는 경우는 거의 없습니다. 하지만, XOR 문제를 통해 단순 퍼셉트론에서 은닉층을 추가하고, ReLU와 같은 비선형 활성화 함수를 통해 선형 공간을 변환하는 과정을 살펴보고 가중치와 편향 값을 조절하여 문제를 해결하는 원리를 직접 구현하고 결과로 확인할 수 있었습니다.\n3. 개인적인 소견 Minsky와 Papert가 예견한 다층 퍼셉트론의 계산 비용의 증가는 2025년 말 현재에도 여전히 유효한 한계입니다. Rumelhart의 역전파 알고리즘이 GPU, TPU 등 하드웨어의 발전, 막대한 자원 투입과 결합하여 이 문제를 표면적으로 우회한 듯 보이나, 그 이면에는 막대한 전력과 비용이 소모됩니다. 이는 Rumelhart가 자신이 만든 퍼셉트론 구조는 \u0026rsquo;neuron-like\u0026rsquo;일 뿐 \u0026rsquo;neuron\u0026rsquo;이 아니라고 지적했듯이, 생물학적 뇌의 효율성을 모방하려던 초기 목표와는 거리가 멉니다.\n현재의 인공신경망이 탁월한 성능을 보이는 것은 사실입니다. 그런데 약 20와트의 전력으로 인간의 뇌가 수행하는 효율적인 학습 방식은 여전히 미지의 영역입니다. 뇌는 선택적 주의, 작업 기억, 망각, 단기 기억, 장기 기억, 정서 기억 등 복합적인 기제를 통해 현재 퍼셉트론이 학습하는 방식과는 다른 방식으로 정보를 처리하고 학습하는 것으로 보입니다. 뇌의 작동 원리를 모방하려는 시도는 계속되고 있으나, 그 핵심 원리는 아직 밝혀지지 않았습니다.\n결국, GPU 성능에 의존하는 현재의 접근 방식은 한계에 부딪힐 것입니다. 인공지능 분야의 진정한 발전을 위해서는 퍼셉트론이 수많은 은닉층 연결과 끝없는 가중치 계산을 통해 이루어진 학습 방식의 비효율성을 극복하는 문제가 필수 과제라고 생각합니다.\nReference Goodfellow, I., Bengio, Y., \u0026amp; Courville, A. (2016). Deep Learning. MIT Press. Minsky, M., \u0026amp; Papert, S. (1969). Perceptrons: An Introduction to Computational Geometry. MIT Press. Rosenblatt, F. (1958). \u0026ldquo;The perceptron: A probabilistic model for information storage and organization in the brain.\u0026rdquo; Psychological Review, 65(6), 386-408. Rumelhart, D. E., Hinton, G. E., \u0026amp; Williams, R. J. (1986). \u0026ldquo;Learning representations by back-propagating errors.\u0026rdquo; Nature, 323(6088), 533-536. ","permalink":"https://mhkim.dev/posts/16th_mlp_understanding/","summary":"\u003ch2 id=\"1-다층-퍼셉트론-분류-모델mlp의-등장\"\u003e1. 다층 퍼셉트론 분류 모델(MLP)의 등장\u003c/h2\u003e\n\u003cp\u003e퍼셉트론 분류 모델은 데이터 분포가 선형 분리 가능할 때만 결정 경계의 수렴을 보장한다는 한계가 있었습니다. 하지만, 다층 퍼셉트론 모델은 이러한 선형 분리가 불가능한 데이터 분포 문제를 해결했습니다. 퍼셉트론(Perceptron) 개념의 등장(Rosenblatt, 1958), 단층 퍼셉트론의 한계(Minsky \u0026amp; Papert, 1969), 그리고 역전파(Backpropagation) 알고리즘 개발(Rumelhart et al., 1986)을 순차적으로 살펴보면 선형 분리 문제 해결 과정을 파악할 수 있습니다.\u003c/p\u003e\n\u003ch3 id=\"11-퍼셉트론perceptron-등장\"\u003e1.1 퍼셉트론(Perceptron) 등장\u003c/h3\u003e\n\u003cp\u003e다층 퍼셉트론 등장의 배경을 이해하기 위해, 초기 퍼셉트론 개념을 다룬 논문을 먼저 살펴보겠습니다.\u003c/p\u003e","title":"실습 및 다층 퍼셉트론 모델의 이해"},{"content":"글또 마무리 시작은 조금 망설이며 2주에 한 번씩 글을 쓰는 글또 모임이 어느덧 끝을 향해 갑니다. 작년 하반기부터 올해 3월까지, 짧지 않았던 여정을 마무리하며 조용히 돌아보는 시간을 가져봅니다.\n사실 처음에는 망설임이 컸습니다.\n정신없는 시기였고, 사소한 일조차 감당하기 버거운 때였기에 정기적으로 글을 쓴다 는 게 부담스럽게 느껴졌습니다.\n그래서 초반에 패스를 빠르게 써버리기도 했고요.\n하지만 막상 한 편, 두 편 쓰다 보니 어느새 흐름이 생기고,\n기억과 생각이 글 속에 차곡차곡 쌓이기 시작했습니다.\n글쓰기가 가져온 변화 지금도 밤 11시가 되어서야 겨우 책상에 앉아 글을 쓰고 있지만,\n이 습관 자체가 큰 의미를 가집니다.\n억지로라도 머릿 속 생각을 정리하고, 떠오른 아이디어를 붙잡아두게 되니까요.\n글을 쓰며 생각의 방향이 달라지기도 하고,\n머릿속에만 있던 이미지가 문장으로 구체화되면서 새로운 시각이나 연결이 생기기도 했습니다.\n리더십, 조직의 역동 같은 주제들이 자연스럽게 이어지며 생각의 스펙트럼이 넓어졌습니다.\nWork and Study balance 직장과 학업을 병행하고 있습니다.\n이미 일반대학원에서 석사 과정을 마쳤지만,\n필요에 의해 다른 전공으로 야간대학원에 다시 진학하게 되었던\u0026hellip;\n이상하다 분명 난 프로젝트, 논문 다 쓰고 졸업을 했는데ㅋㅋㅋ 어쩌다 보니 석사학위만 2개가 될 수도…\n일단 한 학기만 다녀보고 결정하자. 아니다 싶으면 자퇴하면 되지~ 마음으로 시작했지만 여전히 내면에는 많은 갈등을 안고 있습니다.\n일반대학원이면 국가 장학금, 연구 장학금이 있고, 프로젝트 수행으로 돈을 받으면서 생활 할 수 있습니다.\n야간대학원이면 직장 생활을 동시에 병행해야 하는 게 킬링 포인트입니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ\n공부를 지속할 동기와 현실적인 여건 사이에서 균형을 잡는 일이 쉽지는 않습니다.\n그래도 글을 쓰는 과정에서 고민을 한 걸음 떨어져서 바라볼 수 있었던 건 좋은 것 같습니다.\nConnection 최근 애플에서 열린 세계 여성의 날 행사에 대면 참석하면서,\n다양한 분들의 이야기를 들을 기회가 있었습니다.\n그 자리에서 오랜 시간 자리를 지켜온 분들의 진솔한 이야기를 들으며,\n각자의 자리에서 얼마나 치열하게 살아가고 있을지를 새삼 느꼈습니다.\n각자의 모습이 깊은 인상을 남겼고, 힘이 되어 주었습니다.\n받은 붉은 장미도 잘 간직하고 있습니다.\n그리고 글을 쓰면서 탐색했던 주제도 기억에 남았던 것 같네요.\n최근에는 iForest 알고리즘을 보면서 이상치 탐지, 그 안에 드러나는 사람, 그리고 사회적 구조까지 좀 확장해서\n생각했던 것 같습니다.\n최근에는 성인이 된 영재들,\n나를 죽이는 건 언제나 나였다\n라는 책을 읽었는데,\n이 책은 영재들이 겪는 극심한 고립감과 조직 내에서 천재가 어떻게 죽어가는지를 다룹니다.\n사람들은 천재에 대해 시기질투와 동경, 양가적인 감정을 가지고 있고, 질투는 상당히 무서운 감정이라는 점. 타인을 끌어내리려고 하는 감정이 어떻게 재능을 짓밟을지. 등이 나옵니다.\n조직 내에서 천재와 수재, 그리고 범인들의 역동적인 관계.\n에 대해서 읽으면서\n팀장의 입장에서도 아마 이런 책들은 조직 내의 역동을 다루는 데 도움이 되지 않을까란 생각을 합니다.\nMirror 글을 쓰면서 가장 크게 느낀 건\n제가 제가 쓴 글을 좋아한다는 점이었습니다ㅋㅋㅋㅋ\n예전에 쓴 글을 다시 읽으면서 마치 일기장을 펼치듯 그 시기의 감정과 생각을 정리하게 됩니다.\n때로는 공유할 수 없는 일들이라도, 글로 생각을 정리하는 것만으로도 위로가 되었고,\n그 안에 또 다른 아이디어가 싹트는 경험도 했습니다.\nSTART 이제 끝나가지만, 글 쓰는 건 계속 됩니다.\n기억을 남기고, 생각을 정리하고, 나를 돌아보는 이 시간들은\n너무 소중합니다.\n함께 해주신 분들에게 감사드리며,\n각자의 삶에도 늘 건강과 행복이 함께하길 바랍니다.\n우리 모두의 여정에 따뜻한 빛이 깃들길 바랍니다.\n끝.\n","permalink":"https://mhkim.dev/posts/14th_lifegoeson/","summary":"\u003ch1 id=\"글또-마무리\"\u003e글또 마무리\u003c/h1\u003e\n\u003ch2 id=\"시작은-조금-망설이며\"\u003e시작은 조금 망설이며\u003c/h2\u003e\n\u003cp\u003e2주에 한 번씩 글을 쓰는 글또 모임이 어느덧 끝을 향해 갑니다.\n작년 하반기부터 올해 3월까지, 짧지 않았던 여정을 마무리하며 조용히 돌아보는 시간을 가져봅니다.\u003c/p\u003e\n\u003cp\u003e사실 처음에는 망설임이 컸습니다.\u003c/p\u003e\n\u003cp\u003e정신없는 시기였고, 사소한 일조차 감당하기 버거운 때였기에 정기적으로 글을 쓴다 는 게 부담스럽게 느껴졌습니다.\u003c/p\u003e\n\u003cp\u003e그래서 초반에 패스를 빠르게 써버리기도 했고요.\u003c/p\u003e\n\u003cp\u003e하지만 막상 한 편, 두 편 쓰다 보니 어느새 흐름이 생기고,\u003c/p\u003e\n\u003cp\u003e기억과 생각이 글 속에 차곡차곡 쌓이기 시작했습니다.\u003c/p\u003e","title":"Neverthless, Life goes on"},{"content":"Isolation Forest와 관련해서 재탐구 2 Isolation Forest 와 Anomaly detection에 대해 사회적 현상과 관련해서 생각하고 있는 내용을 정리했습니다.\nanomalies는 정상 데이터보다 Binary Search로 접근할 경우 path Length 가 적다 라고 가설을 세우고 그걸 증명한 논문의 아이디어가 너무 신기했고, 계속 생각하게 됩니다. 여기에서 더 나아갈 수 있는 부분이 있는지.\n좀더 anomalies를 적은 복잡도로 탐지할 수 있는 방법이 있을 지 등도요.\nAnomalies \u0026amp; IQ 정상 범주를 넘어 있는 것들에 대한 관심이 있습니다. anomalies. 이상치 라는 값들에 대해서 관심을 가지게 된 건\n첫 번째는 IQ 측정과 관련해서 였던 것 같습니다.\nIQ는 mean 100, standard deviation 값은 15 로 1차원의 Univariate Gaussian Distribution의 형태로 이루어져 있습니다.\n변수는 x (IQ) 하나만 있는 경우고, 밀도 함수로 벨 곡선 형태를 가지고 있습니다.\nstd 1 을 기준으로 85 와 115, std 2를 기준으로 70과 130. std 3을 기준으로 65와 145\n의 IQ를 기준점을 잡고,\n통상적으로, std 2 이하와 이상인 경우를 \u0026ldquo;비정상\u0026rdquo; 이라고 정의 내립니다.\n\u0026ldquo;비정상\u0026rdquo; 은 \u0026ldquo;이상치\u0026rdquo; 라고 하기도 하고, \u0026ldquo;일어날 확률이 낮다\u0026rdquo; 라고도 정의를 내립니다.\n특히 std 2 이하인 경우는 법률적으로도 매우 중요한데\n해당 지능지수를 가진 경우 스스로 판단할 수 있는 능력이 낮다고 보기 때문에 사회적/법적 보호를 받을 수 있습니다.\n그리고 그 거울 반대편인 std 2 이상의 경우에는 사회적으로 높은 기대를 가지게 되는데,\n사회적 기여 가능성이 높아 지원 대상이 되기도 합니다.\nAnomalies \u0026amp; Isolation. 왜 해당 단어들은 함께 등장하는 걸까? 흥미로운 건 anomaly 는 고립 Isolation 이라는 단어와 늘 함께 등장을 한다는 겁니다.\n고립이라는 용어는 인스턴스를 나머지 인스턴스와 분리되는 것을 뜻한다고 정의내릴 수 있고,\n이상치들은 \u0026lsquo;일어날 확률이 적고, 일반 데이터와 다르기\u0026rsquo; 때문에 고립에 취약합니다.\nstd 2 이하와 이상의 경우 빠르게 사회와 분리되어 버린다. 라고 볼 수 있습니다.\n이런 아이디어를 바탕으로 Isolation Forest는 데이터 포인트를 랜덤하게 나누는 트리(tree)를 만들어\n각 데이터가 얼마나 빨리 고립되는지에 따라 이상치를 판별합니다.\n이때 정상 포인트는 고립되기까지의 경로 길이(path length)가 길지만,\n이상 포인트는 상대적으로 짧은 경로 길이로 빠르게 고립됩니다.\n매우 단순하지만 직관적인 아이디어라는 점에서 흥미를 느꼈습니다.\nDimension 그런데 IQ와 같이 변수가 하나뿐인 단변량(Univariate Gaussian) 정규분포에서는\n평균에서 멀리 떨어진 점이 이상치로서 쉽게 인식될 수 있다는 점을 이해했습니다.\n그렇다면 창의성 차원을 덧붙이거나 bivariate gaussian, 추가로 사회적 지능을 덧붙여서 trivariate gaussian이 되도록 하면? 추가로 감성 지능 등등과 같이 차원 변수를 높인가면?\n즉 차원이 높은 데이터라면 고립이 빠르게 될까요?\n이론적으로 차원이 높아질수록 데이터는 희소한(sparse) 공간에 존재하게 되어\n점들이 서로 멀어지기 때문에 Isolation Forest가 더 빠르게 고립시킬 가능성이 있습니다.\n하지만,,,,\n여기에는 차원의 저주(curse of dimensionality)라는 문제도 함께 등장합니다.\n차원이 높아질수록 모든 점 사이의 거리가 비슷해지는 경향이 나타나기 때문에,\n이상치와 정상 데이터 간의 차이가 명확하지 않다면 실제로 고립이 더 어려워질 수도 있습니다.\niForest 이후 개선점 이런 한계를 극복하기 위해 Isolation Forest 이후에도 다양한 개선 기법들이 등장했습니다.\n대표적인 기법으로는 다음과 같은 연구들이 있습니다:\nExtended Isolation Forest(EIF):\n기존의 축에 평행한 분할 대신 데이터 공간에서 임의의 각도로 분할해 성능을 높인 방식\nRotated Isolation Forest(RIF):\n데이터를 무작위로 회전시켜 유령 클러스터(ghost cluster)를 방지하고 정확도를 높임\nAttention-based Isolation Forest(ABIForest):\n주의 메커니즘(attention)을 적용하여 중요한 특징에 가중치를 주는 방식\nOptimal Isolation Forest(OptIForest):\n이론적 분석을 바탕으로 최적의 트리 구조를 찾아 성능을 높임\nActive Learning-based Isolation Forest(ALIF):\n능동 학습(active learning)을 이용해 사용자 피드백을 반영하여 모델을 지속적으로 개선하는 방식\n흐름 최근의 연구 흐름을 보면, Isolation Forest의 핵심 아이디어는 유지하면서도,\n분할 방식의 다양화나\n최적화된 구조 등으로 성능을 지속적으로 개선하고 있는 것을 알 수 있습니다\n여전히 신기 iForest를 봤을 때 짧은 경로 길이를 가진다고 할 때 일단 좀 신기했습니다. 랜덤한 분할을 할 때 더 빠르게 분할 된다고 하고,\n정상 포인트 x_{i} 는 고립되기 위해 12개의 랜덤 분할이,\n이상 포인트 x_{o} 는 고립되기 위해 4개의 랜덤 분할이 이루어지며,\ntree의 수가 증가할 때 average path length는 수렴합니다. x_{i}는 대략 12.82개, x_{o}는 대략 4.02개.\n정리 결론. 비정상적일 수록 빠르게 사회와 고립된다\u0026hellip;ㅋㅋㅋ 암시적이기도 하고, 개인적인 삶에서 이런저런 지원들이 많이 필요할 듯합니다.\n어쨌든 생각 정리 끝.\nReference Liu, F. T., Ting, K. M., \u0026amp; Zhou, Z. (2008). Isolation forest. Proceedings of the 2008 IEEE International Conference on Data Mining (ICDM), 413-422. https://doi.org/10.1109/ICDM.2008.17\n","permalink":"https://mhkim.dev/posts/13th_iforest2/","summary":"\u003ch1 id=\"isolation-forest와-관련해서-재탐구-2\"\u003eIsolation Forest와 관련해서 재탐구 2\u003c/h1\u003e\n\u003cp\u003eIsolation Forest 와 Anomaly detection에 대해 사회적 현상과 관련해서 생각하고 있는 내용을 정리했습니다.\u003c/p\u003e\n\u003cp\u003eanomalies는 정상 데이터보다 Binary Search로 접근할 경우 path Length 가 적다 라고 가설을 세우고 그걸 증명한 논문의 아이디어가 너무 신기했고, 계속 생각하게 됩니다. 여기에서 더 나아갈 수 있는 부분이 있는지.\u003c/p\u003e\n\u003cp\u003e좀더 anomalies를 적은 복잡도로 탐지할 수 있는 방법이 있을 지 등도요.\u003c/p\u003e\n\u003ch1 id=\"anomalies--iq\"\u003eAnomalies \u0026amp; IQ\u003c/h1\u003e\n\u003cp\u003e정상 범주를 넘어 있는 것들에 대한 관심이 있습니다. anomalies. 이상치 라는 값들에 대해서 관심을 가지게 된 건\u003c/p\u003e","title":"Isolation Forest_2"},{"content":"Isolation Forest 관련 논문을 읽고 알고리즘을 파악해보려고 합니다.\n1 Isolation Forest Intro \u0026ldquo;Anomalies are data patterns that have different data characteristics from normal instances\u0026rdquo; (Liu et al., 2008)\n이상치는 정상 instances 와 다른 데이터 특성을 가진 데이터 패턴이다 라고 제시하고 있고,\n이상 탐지는 데이터에서 평소와 다른 비정상적인 패턴을 찾는 과정이라고 정의를 해 볼 수 있습니다.\n기존의 이상 탐지 방법들은 정상적인 데이터의 패턴을 먼저 학습하고, 이를 벗어나는 데이터를 이상치로 간주하는 방식을 사용했습니다.\n하지만, 정상 데이터를 학습하는 데 시간이 오래 걸리고,\n고차원 데이터에서는 성능이 떨어지며,\n훈련 데이터에 이상치가 포함되지 않으면 탐지하기 어렵습니다.\n이런 문제를 해결하기 위해 Isolation Forest 방법이 제시되었습니다.\n2 격리하는 새로운 방식 기존 방법과는 다르게 정상 데이터를 학습하지 않고, 대신 이상치를 빠르게 격리하는 방식을 사용하는 방법도 있습니다.\n이는 정상 데이터보다 이상치들이 더 쉽게 분리된다는 원리를 활용한 것 입니다.\n핵심 아이디어는\n랜덤한 분할로 트리를 만들고,\n이상치는 적은 분할 횟수로 격리되는 것입니다. 즉 이상치는 경로 길이가 짧고,\n정상 데이터는 많이 나뉘어야 격리 되고, 경로 길이가 깁니다.\n이 방식을 사용하면 데이터가 많아도 빠르게 이상치를 찾을 수 있고, 고차원 데이터에서도 성능이 유지됩니다.\n3 동작 과정 여러 개의 트리들을 생성하고, 경로 길이를 분석하여 이상치를 탐지하는 방식으로 동작합니다.\n3.1 여러 개의 isolation tree(itree) 생성 여러 개의 isolation tree를 생성해서 forest를 구성하도록 합니다.\n여러 개의 트리를 만들기 위해서,\n데이터에서 일부 샘플을 무작위로 선택합니다.\n각 트리에서 데이터를 랜덤하게 분할하여 빠르게 이상치를 격리합니다.\n트리의 깊이를 제한해서 과적합을 방지합니다.\n알고리즘 1의 경우 forest를 초기화하고(여러 개의 트리를 저장할 빈 숲을 만들며)\n최대 트리 깊이를 설정합니다. t번 정도 isolation tree 생성 반복을 해서 t개의 iTree를 생성하여 forest에 추가합니다.\n각 트리는 데이터셋 X에서 랜덤하게 샘플링된 Psi (기호 적기 귀찮\u0026hellip;) 개의 데이터를 사용해서 학습합니다.\n생성된 t개의 isolation tree 를 반환합니다.\n이 단계에선 여러 개의 iTree를 만들어 isolation Forest를 구성합니다.\n3.2 경로 길이 측정 데이터 포인트는 isolation tree 에서 격리될 때까지의 path length를 계산합니다.\n이상치는 경로 길이가 짧고\n적은 분할 횟수로 쉽게 격리되며\n정상 데이터는 경로 길이가 길며\n많은 분할 횟수가 필요합니다.\n측정한 경로 길이 값을 평균 내어 Anomaly Score, 이상 점수를 계산합니다.\n좀 더 동작 과정을 설명하면 종료 조건을 확인하고 트리 깊이가 최대 깊이에 도달하거나 데이터 크기가 1이하면 종료 합니다. 이 때 외부 노드를 생성하고 데이터 크기를 저장합니다.\n분할 속성 및 갚을 선택합니다 q, p\n데이터 분할의 경우 분할 값 p 를 기준으로 데이터를 두 개의 그룹으로 나누는데 왼쪽 서브트리 오른쪽 서브트리로 나뉩니다.\n재귀적으로 iTree를 생성하고,\n데이터를 랜덤하게 분할하면서 트리를 생성하며, 이상치가 더 빠르게 격리되도록 합니다.\n3.3 Anomaly Score 계산 외부 노드인지를 확인하고,\n분할 속성 및 값을 확인합니다. 현재 노드에서 데이터를 분할한 속성 q와 분할 값 p를 가져옵니다.\n경로 탐색이 시작하고 탐색할 때마다 경로 길이를 1 증가합니다.\n특정 데이터 포인트 x의 경로 길이를 측정하여 이상치인지 판단하는 기준을 제공합니다\nanomaly score가 1에 가까우면 이상치,\n0.5에 가까우면 정상 데이터\n장점 빠른 실행 속도\u0026hellip; nlogn의 실행 속도를 가집니다.\n고차원 데이터에 강하고 속성들이 많아도 성능을 유지할 수 있으며,\n훈련 데이터에 이상치가 없어도 탐지를 가능하게 할 수 있습니다. 기존 방법보단 유연하고,\n샘플링을 활용하여 연산 최적화를 할 수 있습니다. 일부 데이터만 사용해도 높은 정확도를 유지할 수 있습니다.\n현업이라면 금융 사기 탐지나 네트워크 보안, 제조 결함 감지와 같이 빠르고 효율적인 탐지가 필요한 곳이면 적용해 볼 가능성이 있습니다.\n해당 접근 방법이 중요한 이유는,\n랜덤 분할로 이상치를 빠르게 찾아낼 수 있고, 기존의 거리나 밀도 기반 방법보다는 효율적이며, 대량 데이터와 고차원 데이터에서도 강력한 성능을 가질 수 있습니다.\n정리 정리하면,\n먼저, 여러 개의 isolation Tree를 생성해서 숲을 구성하고,\n두 번재로, 데이터를 랜덤하게 분할하여 개별 트리를 구축,\n세 번째, 새로운 데이터 포인트 x가 트리에서 얼마나 빠르게 격리되는지를 측정하고,\n네 번째, 여러 트리에서 얻은 경로 길이를 기반으로 이상 점수를 결정하며,\n마지막, 이상 점수가 특정 임계값 이상이면 이상치로 판단합니다.\n끝.\nReference Liu, F. T., Ting, K. M., \u0026amp; Zhou, Z. (2008). Isolation forest. Proceedings of the 2008 IEEE International Conference on Data Mining (ICDM), 413-422. https://doi.org/10.1109/ICDM.2008.17\n","permalink":"https://mhkim.dev/posts/12th_isolationforest/","summary":"\u003cp\u003eIsolation Forest 관련 논문을 읽고 알고리즘을 파악해보려고 합니다.\u003c/p\u003e\n\u003ch1 id=\"1-isolation-forest-intro\"\u003e1 Isolation Forest Intro\u003c/h1\u003e\n\u003cp\u003e\u0026ldquo;Anomalies are data patterns that have different data characteristics from normal instances\u0026rdquo; (Liu et al., 2008)\u003c/p\u003e\n\u003cp\u003e이상치는 정상 instances 와 다른 데이터 특성을 가진 데이터 패턴이다 라고 제시하고 있고,\u003c/p\u003e\n\u003cp\u003e이상 탐지는 데이터에서 평소와 다른 비정상적인 패턴을 찾는 과정이라고 정의를 해 볼 수 있습니다.\u003c/p\u003e\n\u003cp\u003e기존의 이상 탐지 방법들은 정상적인 데이터의 패턴을 먼저 학습하고, 이를 벗어나는 데이터를 이상치로 간주하는 방식을 사용했습니다.\u003c/p\u003e","title":"Isolation Forest"},{"content":"1 Anomaly Detection Intro 요즘 관심 있는 주제라서 anomaly detection과 deep learning review와 관련한 논문을 읽고 리뷰하려고 합니다.\n1960년대부터 anomaly detection은 많은 연구가 이루어진 영역입니다. 여러 분야에서 다양한 용어들을 사용해서 그렇지만 이상치를 탐지하는 건 주요 주제 중 하나입니다. 예를 들어, intrusion detection라는 용어는 computer security 분야에서 안전 룰를 위반한 경우를 자동적으로 탐지하는 것을 뜻하기도 했습니다.(Anderson, 1980,Lunt, 1990,Heberlein, Dias, Levitt, Mukherjee, Wood \u0026amp; Wolber, 1990, Lane \u0026amp; Brodley, 1997)\nKumar (1995)는 “Anomaly detection attempts to quantify the usual or acceptable behavior and flags other irregular behavior as potentially intrusive.” 이라고 정의하기도 했습니다. 그런데 이렇게 정의하는 게 맞는 걸까? 문제는 이상치가 뭔지를 어떻게 정의하려는 게 제일 큰 문제입니다.\n통계학에서는 일반적으로 standard deviation 이라는 개념을 활용합니다. standard 는 기준의 라는 뜻이고 deviation은 deviate 벗어나다 뜻으로 기준으로부터 벗어난 정도라는 의미이며 한국어로는 표준 편차라는 뜻입니다. x 값에서 평균을 빼고 제곱을 한 뒤 root를 씌웁니다. 제곱하지 않고 절대값을 활용하는 경우도 있는데 MAE처럼 말이죠. mean of absolute error. 보통은 제곱해서 평균으로부터 얼마나 \u0026lsquo;벗어나 있는지\u0026rsquo; 를 탐지하려고 합니다. 여기에서 표준편차 플러스 마이너스 1~3부터를 기준으로 씁니다. 표준편차 1 이상이거나 -1 이하 합쳐 5% 확률로 일어나는 값을 뜻합니다. 표준편차 플러스 2 마이너스 2는 2.5% 였던 것 같은데\u0026hellip; 아무튼 드문 케이스죠. 그런데 실제 환경에서 이상치가 뭐야 어떻게 찾아낼 거냐 하는 건 쉽지 않습니다. 잘 일어나지도 않고 예측 불가고 라벨링 하기에는 데이터 불균형이 너무 큽니다. 전체 데이터 중 1% 정도 일어나는 경우를 찾아내야 할 때도 있고요.\n대표적으로는 사기 탐지를 어떻게 할 거냐 라는 질문에서 패턴을 찾아보는 방식이 도입되기도 합니다. 이렇게 지식 그래프를 활용해서 보험 fraud를 탐지하는 경우도 있습니다. 그래프를 보면 한 사람이 여러 개의 뱅크 계좌 여러 개의 이메일을 갖는 경우는 룰 위반은 아닌 듯한데, 휴대폰과 이메일 사는 집 주소를 다른 사람과 공유하는 케이스가 있습니다. 이상하죠. 이런 그래프를 탐지해내고 이걸 이상치라고 정의할 수 있을까요? 이런 방식으로 사기를 탐지해 낼 수 있을까요? anomaly 를 어떻게 정의하며, 실생활에 어떻게 적용해내고, 어떻게 탐지하면 좋을까요? 란 질문이 계속 떠오릅니다. 답은 모르겠는데\u0026hellip; 여러 방식으로 찾아봐야 할 것 같습니다. 그래서 딥러닝 관련해서도 리뷰 논문을 한 편 봤던 것 같습니다. Deep Learning for Anomaly Detection: A Review 이 논문에서는 세 가지 방향으로 리뷰를 합니다 feature extraction, learning feature representation, end-to-end anomaly score learning\u0026hellip;\n2 Challenges Anomaly detection 과 관련한 문제에 접근할 때 문제점입니다. 실생활에서는 일단 주요하게 데이터 불균형이 떠오르는데\u0026hellip; 이 외에도 다른 문제들이 있습니다.\nUnkonwnness\n이상 데이터는 사전에 정의되지 않은 새로운 형태의 패턴을 가질 수 있으며, 데이터의 구조나 분포가 예측하기 어려움. 예: 새로운 유형의 사이버 공격, 금융 사기 패턴, 신종 질병 발생 등 Heterogeneous Anomaly Classes\n이상 데이터는 서로 매우 다른 특성을 가질 수 있어, 하나의 이상 탐지 모델이 모든 유형의 이상을 효과적으로 탐지하기 어려움. 예: 영상 데이터에서 도난, 교통사고, 폭행 등의 이상 이벤트는 서로 다른 특징을 가짐. Rarity and Class Imbalance\n이상 데이터는 일반적으로 전체 데이터의 극히 일부(보통 1% 미만)를 차지하며, 정상 데이터에 비해 수집하기 어려움. 따라서, 지도 학습 방식의 모델 학습이 어렵고, 이상 데이터의 샘플이 부족한 경우가 많음. Diverse types of anomalies\n포인트 이상(Point Anomaly): 개별 데이터 포인트가 전체 데이터 패턴에서 벗어나는 경우 (예: 심박 수 급증) 조건부 이상(Conditional Anomaly): 특정 조건에서만 이상으로 판단되는 경우 (예: 밤중에 발생한 대량 신용카드 결제) 그룹 이상(Group Anomaly): 개별적으로는 정상처럼 보이지만, 그룹으로 묶였을 때 이상을 보이는 경우 (예: 네트워크 공격에서 다수의 계정이 동일한 패턴을 보일 때) High-Dimensional and Dependent Data\n고차원 데이터에서는 이상 데이터가 특정 차원에서만 이상 특성을 보일 수 있어 탐지가 어려움. 시계열 데이터, 그래프 데이터 등에서는 데이터 간의 시간적/공간적 관계를 고려해야 함. 3 Deep Anomaly Detection Methods 1 Feature Extraction 이 방법은 딥러닝 모델을 독립적인 특징 추출기로 사용하여 데이터를 저차원 공간으로 변환한 후, 기존의 이상 탐지 기법(예: k-NN, 군집 분석, 분포 기반 탐지 등)을 적용하는 방식이다. 특징 추출과 이상 탐지 과정이 완전히 분리되어 있어, 기존 이상 탐지 모델과 결합하여 사용할 수 있음. 예: CNN(AlexNet, VGG, ResNet) 기반 특징 추출 후, 기존 이상 탐지 모델 적용. 장점 ✅ 고차원 데이터(예: 이미지, 영상)에서 의미 있는 특징을 추출 가능\n✅ 사전 학습된 모델을 활용하여 적은 데이터로도 성능 향상 가능\n단점 ❌ 특징 추출 과정과 이상 탐지 과정이 별개로 이루어지므로 최적의 특징을 찾기 어려움\n❌ 이상 데이터에 특화된 특징을 학습하지 않음\n2 Learning Feature Representations of Normality 정상 데이터의 일반적인 패턴을 학습하여, 이상 데이터가 정상 패턴에서 벗어나면 탐지할 수 있도록 하는 방식. 특징 표현 학습을 위한 다양한 신경망 모델이 사용됨. 2.1 autoencoder 입력 데이터를 압축하고 다시 복원하는 과정에서, 정상 데이터는 잘 복원되지만 이상 데이터는 큰 오차를 보이도록 학습. 기본 개념: 입력 데이터 → 인코더(Encoder) → 저차원 표현 저차원 표현 → 디코더(Decoder) → 원래 데이터 복원 복원 오류(Reconstruction Error)가 크면 이상 데이터로 판단 변형된 오토인코더 기법: 변분 오토인코더(VAE, Variational Autoencoder): 잠재 공간에 확률 분포를 추가하여 더 강력한 표현 학습 희소 오토인코더(Sparse Autoencoder): 일부 뉴런만 활성화되도록 제한하여 더 일반적인 특징 학습 ✅ 장점: 간단하고 직관적이며 다양한 데이터에 적용 가능\n❌ 단점: 정상 데이터의 변동성이 큰 경우, 이상 탐지 성능이 저하될 수 있음\n2.2 GAN GAN을 활용하여 정상 데이터의 분포를 학습하고, 이상 데이터는 해당 분포에서 벗어나도록 설계. 대표적 방법: AnoGAN: 이상 탐지 시, 정상 데이터와 가장 유사한 데이터를 생성하여 비교 (하지만 검색 시간이 오래 걸림) Fast AnoGAN: 탐색 과정을 생략하여 속도 개선 ALAD: 추가적인 판별기를 활용하여 정확도 향상 ✅ 장점: 다양한 데이터 유형(이미지, 시계열, 그래프)에서 적용 가능\n❌ 단점: GAN 훈련이 어렵고, 모드 붕괴(Mode Collapse) 문제가 발생할 수 있음\n2.3 Time Series 과거 데이터를 기반으로 미래 데이터를 예측하고, 예측값과 실제값의 차이가 클 경우 이상으로 간주. 활용 예: LSTM(Long Short-Term Memory) 네트워크를 활용하여 시계열 데이터(예: 금융 데이터, 기계 센서 데이터) 예측 영상 데이터에서 CNN-LSTM을 활용하여 비정상적인 움직임 탐지 ✅ 장점: 시계열 이상 탐지에 효과적\n❌ 단점: 정상 데이터의 변화 패턴이 복잡할 경우, 이상 탐지 성능 저하\n2.4 자기지도 학습(Self-Supervised Learning) 기반 이상 탐지 데이터를 다양한 방식으로 변형한 후, 변형된 데이터를 분류하는 과정을 통해 정상 데이터의 특성을 학습. 예: 이미지 데이터를 회전, 반전 등으로 변형한 후 원래 상태를 예측하는 CNN 기반 모델 ✅ 장점: 데이터 라벨이 필요 없고, 다양한 데이터 유형에서 사용 가능\n❌ 단점: 변형 방식이 특정 데이터 유형에 종속될 가능성이 있음\n2.5 거리 기반 학습 (Distance-Based Learning) 딥러닝을 사용하여 데이터의 표현을 학습한 후, k-NN 또는 클러스터링을 적용하여 이상 탐지 수행. 예: 데이터 표현을 학습한 후, k-최근접 이웃(k-NN) 거리 계산하여 이상 탐지. ✅ 장점: 기존 거리 기반 탐지 기법의 한계를 보완\n❌ 단점: 고차원 데이터에서 거리 계산이 어려울 수 있음\n2.6 원클래스 분류 (One-Class Classification) One-Class SVM, SVDD(서포트 벡터 데이터 설명) 등의 전통적인 방법을 딥러닝과 결합하여 이상 탐지 성능을 향상. 대표적 방법: Deep SVDD: 정상 데이터의 특징을 중심으로 데이터를 압축하여 이상 데이터와 분리 ✅ 장점: 지도 학습 없이도 높은 성능 제공\n❌ 단점: 고차원 데이터에서 훈련이 어려울 수 있음\n3 End-to-End Anomaly Score Learning 이상 탐지를 위한 최적의 이상 점수(Anomaly Score)를 직접 학습하는 방식. 기존 방법과 달리, 특징 추출과 이상 탐지를 하나의 신경망에서 학습. 대표적 방법: Ranking Model: 정상 데이터와 이상 데이터를 비교하여 랭킹 학습 수행 Deep One-Class Networks: 정상 데이터를 단일 클래스(One-Class)로 학습하여 이상 탐지 ✅ 장점: 특징 학습과 이상 탐지를 동시에 최적화 가능\n❌ 단점: 복잡한 학습 과정 및 높은 계산 비용\n4 Details\u0026hellip; how? 이 중 2,3번 learning feature representations 와 end-to-end 부분만 정리하겠습니다.\n2 learning feature representations 이 방법은 정상 데이터의 일반적인 패턴을 학습하여, 이상 데이터가 정상 패턴에서 벗어나는 경우 이를 감지하는 방식 특징 학습(feature learning)과 이상 탐지(anomaly detection)를 완전히 분리하지 않고 결합하는 것이 특징이다. 2.1 오토인코더(Autoencoder) 기반 이상 탐지 오토인코더(AE)는 데이터를 압축(Encoding)한 후 복원(Decoding)하는 신경망이다. 정상 데이터는 잘 복원되지만, 이상 데이터는 복원 오차(Reconstruction Error)가 커지도록 학습. 복원 오차를 기반으로 이상 점수를 계산하여 탐지. (1) 기본 오토인코더(AE)\n- 입력 데이터를 저차원 특징 공간으로 압축한 후 복원하는 방식. - 복원 오차가 큰 데이터 포인트는 이상 데이터로 간주. (2) 변형된 오토인코더(Variants of Autoencoder)\n- 변분 오토인코더(VAE, Variational Autoencoder): 확률적 분포를 사용하여 데이터의 잠재 표현(latent representation)을 학습. - 희소 오토인코더(Sparse Autoencoder): 뉴런 활성화에 제한을 두어 일반적인 특징을 더 잘 학습하도록 설계. - 컨볼루션 오토인코더(CNN-AE): 이미지 데이터에서 활용되는 CNN 기반 오토인코더. ✅ 장점\n비지도 학습 가능: 정상 데이터만으로도 모델 학습이 가능.\n다양한 변형 가능: 다양한 데이터 유형(영상, 시계열 등)에 적용 가능.\n❌ 단점\n이상 데이터의 복잡한 패턴을 학습하기 어려움: 데이터 변동성이 크면 성능이 저하될 수 있음.\n2.2 생성적 적대 신경망(GAN) 기반 이상 탐지 GAN(Generative Adversarial Networks)은 두 개의 신경망(생성자, 판별자)을 사용하여 정상 데이터의 분포를 학습.\n정상 데이터는 GAN을 통해 쉽게 생성할 수 있지만, 이상 데이터는 잘 생성되지 않음.\n이상 데이터는 생성 모델에서 벗어나므로 탐지 가능.\n대표적 GAN 기반 이상 탐지 모델\nAnoGAN: 정상 데이터를 학습한 후, 이상 데이터는 GAN에서 생성되지 않는다는 점을 활용하여 탐지. Fast AnoGAN: AnoGAN의 단점을 개선하여 이상 탐지 속도를 높인 모델. ALAD (Adversarially Learned Anomaly Detection): GAN을 개선하여 이상 탐지 성능을 높임. ✅ 장점\n이미지 및 시계열 데이터에서 강력한 성능\n이상 데이터의 패턴을 비지도 학습 가능\n❌ 단점\n훈련이 어려움: GAN의 훈련은 불안정할 수 있으며, 모드 붕괴(Mode Collapse) 현상이 발생할 수 있음.\n계산 비용이 높음: 생성 모델과 판별 모델을 동시에 학습해야 함.\n2.3 시계열 기반 과거 데이터를 기반으로 미래 데이터를 예측하고, 예측값과 실제값의 차이가 크면 이상으로 탐지. LSTM, GRU 등 순환신경망(RNN)을 활용하여 시계열 데이터 패턴을 학습. 예: 기계 센서 데이터에서 이상 감지, 금융 거래 패턴 이상 탐지 등.\n✅ 장점\n시계열 데이터에서 효과적\n복잡한 패턴을 학습 가능\n❌ 단점\n비정상적인 정상 패턴이 있을 경우 성능 저하\n긴 시계열 패턴 학습이 어려울 수 있음\n3 end-to-end 기존 방식(특징 추출 + 이상 탐지 분리)과 달리, 이상 탐지를 위한 최적의 표현과 이상 점수를 동시에 학습. 신경망을 활용하여 특정 이상 탐지 목표 함수를 최적화하며, 주어진 데이터에 대해 최적의 이상 탐지 기준을 자동으로 학습. 이상 탐지를 최적화하는 방식에 따라 3가지 세부 방법으로 나뉜다. 3.1 Ranking-Based Models 데이터 샘플 간 **이상도(Anomalousness)**의 상대적인 순위를 학습하는 방식. 정상 데이터와 이상 데이터 사이의 점수 차이를 최대화하는 것이 목표. ✅ 장점\n특정한 이상 탐지 기준을 사용하지 않고 데이터 간 상대적 비교를 통해 이상 탐지를 수행할 수 있음. 지도 학습이 가능하며, 일부 이상 데이터가 주어질 경우 성능이 크게 향상됨. ❌ 단점\n정상 데이터와 이상 데이터 간의 비교 데이터셋이 필요하여, 완전한 비지도 학습(Unsupervised Learning)이 어려울 수 있음. 3.2 One-Class Neural Networks 원클래스 SVM(One-Class SVM) 또는 SVDD(Support Vector Data Description)를 딥러닝 모델에 통합하여 이상 탐지를 수행. 정상 데이터를 하나의 밀집된 공간에 매핑하고, 이 공간에서 벗어나는 데이터를 이상 데이터로 판단. ✅ 장점\n지도 학습 없이 정상 데이터만으로도 모델을 훈련할 수 있음. 기존 원클래스 SVM보다 더 복잡한 데이터 패턴을 학습할 수 있음. ❌ 단점\n정상 데이터의 분포가 매우 넓거나 다양할 경우 성능이 저하될 수 있음. 3.3 Direct Anomaly Score Learning 신경망이 직접 이상 점수를 계산하도록 훈련되는 방식. 손실 함수(Loss Function)를 설계하여, 정상 데이터와 이상 데이터의 점수 분포가 명확히 구분되도록 학습.\n✅ 장점\n이상 탐지 기준을 데이터에 맞게 자동으로 최적화 가능.\n이상 탐지를 위한 최적의 특징을 자동으로 학습하여 성능이 향상됨.\n❌ 단점\n지도 학습이 필요할 수 있으며, 일부 기법은 이상 데이터의 레이블이 필요함.\n5 Evaluation accuracy, Recall, F1-Score 등을 활용 6 Future Research 1 설명 가능성(Explainability) 향상 대부분의 딥러닝 모델은 블랙박스(Black-Box) 방식이므로, 이상 탐지 결과를 사람이 이해하고 신뢰할 수 있도록 설명해야 함.\n2 노이즈 및 이상 데이터에 대한 강건성(Robustness to Noise and Anomalies) 강화 일부 모델은 노이즈 데이터나 이상 데이터가 훈련 데이터에 포함되었을 때 성능이 저하될 수 있음.\n3 효율적인 이상 탐지 모델 개발 대부분의 딥러닝 기반 이상 탐지 모델은 계산 비용이 크므로, 경량화 및 최적화된 모델 개발이 필요함. 임베디드 환경(예: 드론, IoT 기기)에서 실시간 이상 탐지가 가능하도록 연구 필요.\n4 다중 데이터 소스(Multimodal Data) 이상 탐지 현재 연구된 모델들은 단일 유형의 데이터(예: 텍스트, 영상, 그래프)만을 대상으로 하는 경우가 많음. 여러 유형의 데이터를 결합하여 더 강력한 이상 탐지 시스템을 개발하는 것이 필요.\n5 연합 학습(Federated Learning) 기반 이상 탐지 민감한 데이터를 직접 공유할 수 없는 경우(예: 금융, 의료 분야), 연합 학습을 활용하여 분산 환경에서 이상 탐지 모델을 학습하는 연구가 필요.\nß\n","permalink":"https://mhkim.dev/posts/11th_anomalydetection_deeplearning/","summary":"\u003ch1 id=\"1-anomaly-detection-intro\"\u003e1 Anomaly Detection Intro\u003c/h1\u003e\n\u003cp\u003e요즘 관심 있는 주제라서 anomaly detection과 deep learning review와 관련한 논문을 읽고 리뷰하려고 합니다.\u003c/p\u003e\n\u003cp\u003e1960년대부터 anomaly detection은 많은 연구가 이루어진 영역입니다. 여러 분야에서 다양한 용어들을 사용해서 그렇지만 이상치를 탐지하는 건 주요 주제 중 하나입니다. 예를 들어, intrusion detection라는 용어는 computer security 분야에서 안전 룰를 위반한 경우를 자동적으로 탐지하는 것을 뜻하기도 했습니다.(Anderson, 1980,Lunt, 1990,Heberlein, Dias, Levitt, Mukherjee, Wood \u0026amp; Wolber, 1990, Lane \u0026amp; Brodley, 1997)\u003c/p\u003e\n\u003cp\u003eKumar (1995)는 “Anomaly detection attempts to quantify the usual or acceptable behavior and flags other irregular behavior as potentially intrusive.” 이라고 정의하기도 했습니다. 그런데 이렇게 정의하는 게 맞는 걸까?\n문제는 이상치가 뭔지를 어떻게 정의하려는 게 제일 큰 문제입니다.\u003c/p\u003e","title":"Anamoly Detection and Deep Learning Review Paper"},{"content":"Quantum Computing Intro 양자 컴퓨팅이 최근 화두로 떠오르고 있어서 공부를 시작해 보았습니다. 아직 깊이 이해한 것은 아니지만 (사실 모름), 배운 내용을 정리하며 개념을 확립하려는 목적으로 작성했습니다. 특히 암호학과 양자 컴퓨팅의 접점에 관심이 있어, 이 기술이 현재의 인공지능과 암호화 기술에 어떤 변화를 가져올지 알아보고 싶었습니다. (그리고 10번째 포스팅. 1과 0이 동시에 있으니 양자 알고리즘과 관련해서 글을 쓰고 싶었던 이상한 이유도 있습니다.)\nQuantum Computing 우선, 양자 컴퓨팅을 고전 컴퓨팅과 비교해보겠습니다.\n양자 컴퓨팅은 고전 컴퓨팅과 비교해볼 때 본질적인 차이가 있습니다. 고전 컴퓨팅은 스위치의 on/off 상태를 이용해 1과 0으로 정보를 처리하며, 이를 통해 확률적인 결과를 계산하기도 합니다. 반면, 양자 컴퓨팅의 기본 단위는 큐비트(qubit)입니다.\n큐비트는 단순히 1 또는 0이 아니라, 두 상태가 동시에 존재할 수 있는 중첩(superposition)을 나타냅니다. 예를 들어, 큐비트는 [1, 0] 또는 [0, 1]의 기저 벡터뿐만 아니라, [1/√2, -1/√2] 같은 상태도 가질 수 있습니다.\n중요한 점은 이 모든 상태가 기저 벡터로 표현된다는 것입니다.\nLinear Algebra and Quantum 특징 3가지를 기점으로 작성했습니다.\n1 특징으로는 양자 컴퓨팅은 유한 차원 벡터 공간을 사용합니다.\n양자 컴퓨팅에서는 algebra 개념이 필수적입니다. 물론 무한 차원이 아닌 유한 차원 벡터 공간을 사용하며\u0026hellip; 복소수(complex number)가 중요한 역할을 합니다. 이는 전자의 스핀 같은 양자 상태를 다양한 각도에서 측정할 때 필요합니다.\n2 그리고 선형 대수에서 브라-켓 표기법을 채택하여 사용합니다. 양자 컴퓨팅에서 column 벡터는 ket 으로, row 벡터는 bra 로 표현됩니다. 예를 들어:\ncolumn vector를 v라고 했을 때,\n|v\u0026gt; = [2 3 -2].Transpose row vector를 w라고 했을 때\n\u0026lt;w| = [1 0 -pi 23] 꺽쇠 모양이 열인지 행인지에 따라 다릅니다. 계산 방식은 기존 선형대수학과 동일하지만, 표현 방식만 다릅니다.\n3 양자 컴퓨터의 단위는 큐비트입니다.\n큐비트는 유한 차원 벡터 공간의 unit ket입니다.\n기저 벡터로 이해하는 게 빠릅니다 [1 0] [0 1]\n스핀해서 [1/root(2) -1/root(2)] [ 1/root(2) 1/root(2) ]\n큐비트가 가질 수 있는 상태는 무한히 많으며, 이는 고전 컴퓨팅의 이진 상태와 근본적으로 다릅니다.\nlocal realism debate 국소적 실재론(local realism) 입자는 자신이 위치한 국소적 환경에만 영향을 받는다는 개념입니다.\n아인슈타인과 보어의 논쟁은 이 국소적 실재론을 둘러싸고 진행되었습니다.\n뉴턴과 양자역학의 차이 예를 들어, 뉴턴 역학에서는 초기 조건(질량, 거리 등)을 알면 결과를 완벽히 예측할 수 있습니다. 하지만 양자역학에서는 결과가 확률적으로 나타나며, 불확실성이 존재합니다.\n좀 더 구체적으로는 지구는 태양 주위를 공전하는 예시를 들 수 있는데. 지구 질량, 태양 질량, 거리, 중력 상수가 주어지면 인력의 크기를 구할 수 있지만(뉴턴 법칙), 연결하는 매커니즘이 무엇인지 알려주지 못합니다. 국소적 실재론은 행성은 자신이 위치한 시공간의 모양에 따라 움직인다는 것이고, 아인슈타인의 국소적 실재론이 더 그럴듯하지 한 쪽의 상태가 관찰되면 다른 쪽 상태도 동시에 변하는 원격 작용은 너무 수수께끼 같은 이론이었습니다. 보어도 아인슈타인이 말한 것처럼 고전적인 관점이 더 그럴듯해서 해당 이론이 맞다고 주장하고 싶어할 정도로\u0026hellip; 사실상 결정론적이고 모든 초기 조건을 알면 결과를 100% 확실하게 예측할 수 있는 이론이 그럴듯해보이죠.\nQuantum Algorithm 양자 알고리즘은 고전 알고리즘과 비교했을 때 특정 문제를 빠르게 해결할 수 있기도 합니다. 이는 모든 가능한 입력값을 중첩 상태로 동시에 계산할 수 있기 때문입니다. 하지만, 이러한 계산에서 정확한 답을 얻는 것은 중첩 상태를 적절히 조작하는 데 달려 있습니다. 따라서 뒤집어 해석하면, 틀릴 확률이 고전 컴퓨팅 계산 보다 높을 수 있습니다.\n양자 컴퓨터의 등장은 암호학에 바로 영향을 줍니다. 그 중 속도 부분에서 암호학적 문제 해결에 큰 영향을 미칠 수 있습니다. 예를 들어, 현재 널리 사용되는 RSA 암호화 방식은 큰 수를 두 개의 소수로 분해하는 것이 계산적으로 불가능하다는 전제에 기반합니다.\n좀 더 구체적으로, 자주 사용하는 암호인 RSA 방식은 300자리의 값을 두 개의 소수로 구하는 게 불가능하다는 걸 전제로 합니다. 예를 들어, 88631 이라는 값이 있는데, 해당 1개의 수를 소수 2개의 곱. 즉, 가장 큰 두 개의 소수이면서 정수 값을 찾는 걸 예시로 했을 때, 해당 문제를 푸는데 얼마나 시간이 걸릴까요? 일단 저 숫자도 300자리는 아니기 때문에 금방 풀 수 있겠지만 300자리를 넘어간다면? 고전 컴퓨팅에서는 exponential time 을 요구하는 문제라고 주장하지만, 양자 컴퓨팅에서는 풀 수도 있다는 걸 가정할 수 있습니다. 보통 해당 2개의 소수는 공개하지 않고 안전하게 보관해서 통신을 암호화하는데 사용합니다. 보안성은 도청자가 2개의 소수 값을 얻을 수 없다는 사실에 의존하기 때문이죠.\nHomomorphic Encryption 양자 컴퓨팅 시대의 보안에 대한 이슈가 떠오를 것으로 예측할 수 있습니다. 만약 양자 알고리즘이 기존 암호를 푼다면, 이를 대비한 새로운 암호화 방식이 필요합니다.\n동형 암호(Homomorphic Encryption)는 이러한 대안 중 하나입니다. 동형 암호는 중간 과정에서 데이터가 노출되지 않은 채 연산이 가능한 방식입니다. 이 개념은 Linear Algebra의 homomorphism에서 유래했으며, 데이터의 구조를 유지하면서 안전하게 전송하고 처리할 수 있습니다. 구조를 잃지 않고 옮겨지는 함수입니다.\n따라서 누가 \u0026lsquo;관찰\u0026rsquo;하느냐/중간 \u0026lsquo;intercept\u0026rsquo;당하는지와 상관없이 암호해독이 이뤄집니다.\n추가적으로, alice, bob, eve는 암호학에서 자주 언급되는 용어입니다.\ncomputing 그렇다면 큐비트는 현실에서 어떻게 구현을 하는 걸까요.\n큐비트를 안정적으로 유지하기 위해 다양한 물리적 구현 방법이 시도되고 있습니다. 광자, 전자 스핀, 이온, 원자핵 등의 방법이 시도되었습니다.\nIBM과 구글은 초전도체 큐비트를 사용하는 양자 컴퓨터를 개발했습니다.\n최근에는 전자를 다이아몬드에 가두는 방식과 같은 신기술도 연구되고 있습니다.\n양자 우위(Quantum Supremacy) 큐비트의 수가 많아질수록, 양자 컴퓨터는 고전 컴퓨터가 따라잡을 수 없는 속도로 계산할 수 있습니다.\n초기에는 72큐비트 수준에서 시작했지만,\n최근에는 105큐비트 이상을 탑재한 시스템도 등장했습니다.\n양자 우위에 도달하면, 양자 컴퓨터는 기존 컴퓨터로는 불가능했던 문제를 해결할 수 있게 될 것입니다.\n그럼 고전 컴퓨터는 사라지고 양자 컴퓨터로 기존의 컴퓨팅이 해결한 문제들을 포함해서 새로운 문제들을 해결하는 시대가 오지 않을까 예상합니다.\n","permalink":"https://mhkim.dev/posts/10th_quantum_computing_homomorphic_encryption-copy/","summary":"\u003ch1 id=\"quantum-computing-intro\"\u003eQuantum Computing Intro\u003c/h1\u003e\n\u003cp\u003e양자 컴퓨팅이 최근 화두로 떠오르고 있어서 공부를 시작해 보았습니다. 아직 깊이 이해한 것은 아니지만 (사실 모름), 배운 내용을 정리하며 개념을 확립하려는 목적으로 작성했습니다. 특히 암호학과 양자 컴퓨팅의 접점에 관심이 있어, 이 기술이 현재의 인공지능과 암호화 기술에 어떤 변화를 가져올지 알아보고 싶었습니다. (그리고 10번째 포스팅. 1과 0이 동시에 있으니 양자 알고리즘과 관련해서 글을 쓰고 싶었던 이상한 이유도 있습니다.)\u003c/p\u003e\n\u003ch2 id=\"quantum-computing\"\u003eQuantum Computing\u003c/h2\u003e\n\u003cp\u003e우선, 양자 컴퓨팅을 고전 컴퓨팅과 비교해보겠습니다.\u003c/p\u003e\n\u003cp\u003e양자 컴퓨팅은 고전 컴퓨팅과 비교해볼 때 본질적인 차이가 있습니다. 고전 컴퓨팅은 스위치의 on/off 상태를 이용해 1과 0으로 정보를 처리하며, 이를 통해 확률적인 결과를 계산하기도 합니다. 반면, 양자 컴퓨팅의 기본 단위는 큐비트(qubit)입니다.\u003c/p\u003e","title":"Quantum Computing and Homomorphic Encrpytion"},{"content":"태풍을 부르는 영광의 2024년도 로드(load) 2024년이 어느새 끝나갑니다. 올해는 다이나믹하고 배울 점이 많았던 한 해였습니다. 지나온 시간들을 돌아보며 감상과 기억을 정리해봅니다.\n초반 2024년도 초반에는 유난히 고단했던 때였습니다. 초반에는 내부 갈등이 너무 많았고, 그만큼 윗분들과의 회의에서 신경질을 부리고, 화를 내고, 설득하고, 짜증을 내고, 무시하고, 때로는 울기도 하며 온갖 방식을 시도해 보았습니다. 그 과정에서 무기력함에 빠지기도 했죠. 회의 중 말도 안 되는 이야기를 들으며 화가 치밀었고, 큰 소리를 낸 적도 있었습니다. 짤릴 줄 알았는데 여전히 다니고 있다는 사실에 놀랍니다. 그런 경험을 통해 화가 나더라도 끝까지 대화를 이어나가야 한다는 교훈을 얻었습니다.\nDrone 스터디 드론 스터디를 하며 직접 드론을 날리지 못한 건 아쉽지만, 시뮬레이션으로도 많은 것을 배웠습니다. ROS와 AirSim을 다뤄보고, 매주 관련 논문과 영상을 봤었습니다. 우크라이나 전쟁에서 드론이 살상 무기로 사용되는 장면을 보면서 기술이 인간을 대체하게 될 미래를 실감했습니다. 인공지능을 활용해서 드론을 날라는 걸 주제로 다뤘던 것 같은데 실제로는 그냥 드론을 날리고 싶었습니다. 자격증이 필요해서 그냥 시뮬레이션으로 대체하기만 했지만, AirSim 다루는 건 재밌었습니다. ROS와 turtle 도 재밌긴 했지만\u0026hellip; 돌리면서 워크스테이션이 필요하다고 느낀 1인.\n잊지 못할 P사 미팅 올해 가장 인상적이었던 미팅은 P사와의 미팅이었습니다. 온톨로지를 공부하고, 회사의 핵심 가치를 탐구, 중요한 문제를 짚어볼 수 있는 시간이었습니다. P사 대표님이 마련해 주신 식사 자리에서는 예상치 못한 손님들을 초대해서 약간 민망하기도 했지만, 무탈하게 넘어갔고, 음식도 맛있었고. 배운 것들이 많았습니다. \u0026ldquo;제로에서 원이 될 수 있을까?\u0026rdquo; 란 질문은 여전히 제 머릿속에 남아있습니다. 사실은 이 회사의 광팬이기도 합니다. 회사의 철학과 방식에 매료되고, 거기에 더해 주식을 매수했던 것 같습니다. 창조적 순간은 너무 순식간에 일어나는데 그 전 단계들은 얼마나 고단한 과정을 거치는 건지. 콜롬버스가 계란을 깨서 세우는 순간에 아무도 박수를 치지 않는 것. 쉽다고 생각하는 게 사실은 그렇지 않다는 걸 알아주는 것. 그렇게 알아주는 사람들은 소수라는 것. 이런 온갖 생각이 스쳐지나가면서\u0026hellip; 새로운 것들을 꿈꾸고, 없던 걸 탄생시키고, 그런 작업들이 얼마나 특별한지. 이게 얼마나 대단한 건지 알아주고 감동하고 그 순간들이 좋았습니다. 뭔가 새로운 걸 꿈꾸긴 하는데 어떻게 해야 하는지는 여전히 막막하다. 그런 걸 느꼈던 순간이기도 했었습니다.\n글또 반상회 사회 어쩌다 보니 상반기 때 글또 반상회 사회를 맡게 되었습니다. 바쁜 일정 속에서 하루 전날 밤 벼락치기로 준비했습니다. 다행히 잘 마무리할 수 있었습니다. 운영에 기여하고 싶은 마음으로 맡았던 일이고, 재밌는 기억으로 남았습니다. 눈에 띄는 걸 극히 싫어하는 데 이걸 극복해보고자 애썼습니다. 안전지대에서 벗어나는 도전을 했네요.\n건강건강, 코로나, 발목 여름에는 처음으로 코로나에 걸려 일주일 동안 재택근무를 했습니다. 목이 아프고 힘들었던 기억이 납니다. 누워있으면서 소설책을 많이 읽었던 것 같습니다. 누워만 있던 3일 동안 많은 생각이 스쳐지나갔습니다. 게다가 발목도 다쳤던 기억. 넘어져서 발목 부상. 온 다리에 시퍼런 멍이 들어서 정형외과에 갔는데 다행히 뼈는 괜찮다고 해서 안심했지만 걷는 게 너무 아팠던 기억. 한의원, 회사, 집을 오갔던 기억들\u0026hellip; 건강의 소중함을 다시 한 번 깨닫는 시간이었습니다.\n공부, 스트레스, 즐거움 틈틈이 공부를 하면서 스트레스도 받았지만, 그 와중에 티익스프레스도 타고, 혁펜하임님의 사인회에도 다녀왔습니다. 지인 분이 오피셜히게단디즘 티켓팅에 성공해서 공연도 보고, 즐거운 추억들을 쌓으면서 나름 즐거운 시간들도 보냈습니다. 대학원 서류 접수와 면접을 보러 다니면서 보냈던 것도 기억에 남습니다.\n실전투자대회 호기심에 참가한 실전투자대회에서 골드 뱃지 받은 기억. 신기한 경험이었습니다. 왜냐면 바빠서 매매를 못했습니다. 신청한 종목 그대로 끝까지 갔었던\u0026hellip; 매매 없이 수익률 상위권에 들 수도 있구나 를 배웠던!\n개인 앱, 유럽 법률 개인적으로 만든 무료 앱인데도 유럽의 디지털 서비스법 준수를 위해 최근에 여러 서류를 제출하며, 유럽 비지니스 환경의 까다로움을 느꼈습니다. 앱은 거의 3년간 업데이트 없이 방치했지만, 이제는 정말 업데이트를 해야겠다고 다짐했습니다. swift를 독학하며 만들어낸 앱이었기에 더욱 애정이 갑니다.\n글또 10기와 성장 글또가 10기에 접어들며 어느덧 600명이라는 대규모 커뮤니티로 성장한 모습을 보며 감회가 새로웠습니다. 500인 넘으면 보통 대기업으로 분류되는데, 가만히 나둬도 알아서 자라는 나무 같네요. 자연스럽게 성장해가는 과정을 보는 건 참으로 신기하고 뿌듯한 일입니다.\n마무리 2024년도 도전, 배움, 고난, 시련, 극복의 한 해\u0026hellip; 많은 걸 깊이 이해하게 된 한 해였습니다.\n올 한 해는 정말 정신없이 지나갔습니다. 내년에는 회사 업무와 수업을 병행하며 주경야독의 시간을 보낼 예정입니다. 올해의 경험을 발판삼아 더 단단히 성장하는 내년을 만들어가고 싶습니다.\n","permalink":"https://mhkim.dev/posts/9th_reflection_of_2024/","summary":"\u003ch1 id=\"태풍을-부르는-영광의-2024년도-로드load\"\u003e태풍을 부르는 영광의 2024년도 로드(load)\u003c/h1\u003e\n\u003cp\u003e2024년이 어느새 끝나갑니다. 올해는 다이나믹하고 배울 점이 많았던 한 해였습니다. 지나온 시간들을 돌아보며 감상과 기억을 정리해봅니다.\u003c/p\u003e\n\u003ch2 id=\"초반\"\u003e초반\u003c/h2\u003e\n\u003cp\u003e2024년도 초반에는 유난히 고단했던 때였습니다.\n초반에는 내부 갈등이 너무 많았고, 그만큼 윗분들과의 회의에서 신경질을 부리고, 화를 내고, 설득하고, 짜증을 내고, 무시하고, 때로는 울기도 하며 온갖 방식을 시도해 보았습니다. 그 과정에서 무기력함에 빠지기도 했죠.\n회의 중 말도 안 되는 이야기를 들으며 화가 치밀었고, 큰 소리를 낸 적도 있었습니다. 짤릴 줄 알았는데 여전히 다니고 있다는 사실에 놀랍니다. 그런 경험을 통해 화가 나더라도 끝까지 대화를 이어나가야 한다는 교훈을 얻었습니다.\u003c/p\u003e","title":"The Storm of Growth: Reflection 2024 Journey"},{"content":"Ontology란 Ontology의 철학적 정의\n\u0026ldquo;Ontology\u0026quot;는 그리스어 \u0026ldquo;on(being)\u0026rdquo; 과 \u0026ldquo;logos\u0026rdquo;(study연구, discourse담론) 에서 유래.\n온톨로지는 being(존재), existence(실재), reality(현실)의 본질에 대해 연구하는 철학의 한 분야.\nmetaphysics 의 핵심 영역이며, 존재(exist) 하는 것들의 가장 기본적인 범주와 관계에 대해서 연구하는 것.\n아리스토텔레스는 존재 자체(being qua being)를 연구하는 학문이라고 보았고, 그 이후에 온톨로지를 General metaphysics, Special metaphysics로 구분하거나, formal ontology 혹은 regional ontology로 구분하려는 시도도 있음.\n온톨로지와 관련해서는 다음의 질문을 던짐.\n존재의 본질은 무엇인지, 있다면 어떤 종류로 구분될 수 있는지. 그 종류의 관계는 무엇인지. 존재와 비존재의 차이는 무엇인지. 관련한 주요 연구 주제로는\n추상적 혹은 이상적 개념(Abstract or ideal Forms), Universals, 비물질적인 마음(Immaterial minds\u0026hellip;), 마음과는 독립적인 세계(Mind-independent world), 있을 법하지만 실재하지 않는 객체(Possible but not actual objects), 본질(essences) 등 온톨로지는\n철학에서는 실재와 존재의 근본적인 본질을 이해하기 위한 개념을 제시, 컴퓨터 과학에서는 정보를 표현하고 구성하는 방식 틀. 정보 과학에서는 데이터를 더 효율적으로 검색하고 분석하기 위해 분류하고 구조화. 언어학에서는 의미 분석과 관련하여 온톨로지 개념이 적용. 즉, 세계의 근본적 본질에 대해 지식을 이해하고 조직화하는 틀을 제공함.\n정보 표현에서의 Ontology 정보 표현 및 구성 정보 표현 방식에서 온톨로지는 특히 semantic web에서 제공되었음. 웹 표준 기술\u0026hellip; 도메인 내의 개념(클래스), 관계(속성), 개체(인스턴스)를 구조화하고 표현하기 위해서 사용됨. Semantic 웹은 1998년 버너스 리에 의해 제안된 개념. 기계가 웹 상의 정보를 이해하고 처리할 수 있는 지능적인 웹을 목표로 함. 형식 OWL, Turtle, N-triples 등의 형식으로 제공는데, OWL은 지식 표현 및 논리 추론. Turtle/N-Triple은 데이터 교환 및 저장을 구현 OWL(Web Ontology Language) : 온톨로지를 설계하고 논리적 추론을 가능하게 하는 언어. 시맨틱 웹에서 복잡한 지식 기반을 생성하고 관리하는 데 사용됨. W3C에서 OWL을 표준으로 제시함. 예시로는 Google Knowledge Graph, 의료 데이터 모델링 등이 있음. Turtle(Terse RDF Triple Language) : RDF(Resource Description Framework) 데이터를 사람이 이해하기 쉽게 표현하는 형식. RDF는 (주어subject, 술어predicate, 객체object) 구조로 지식과 데이터를 표현하는 표준 프레임워크. N-Triples: RDF 데이터를 단순화된 텍스트 기반으로 표현하는 형식. 특징 특정 영역 내 지식을 구조화된 방식으로 표현하는 것인데, 개념과 관계에 대한 이해, 다양한 시스템 및 데이터베이스 간의 상호운용성, 정보 검색 및 지식 관리 향상에서 온톨로지 개념이 적용되는 것을 확인할 수 있음. 특정 도메인의 개념, 속성, 관계를 명확하고 형식적으로 정의하기 때문에 기계가 이해하고 처리할 수 있는 방식으로 지식을 표현함. 온톨로지의 구조화된 형식은 새로운 지식을 유추하고 복잡한 쿼리에 답변하는 데 활용됨. 특히 heterogeneous 데이터 소스를 다룰 때 중요. 시멘틱 웹의 경우 초기의 야심한 비전을 실현하지는 못했지만.. Linked Data나 RDF, Ontology 기술 등을 보면 데이터의 의미적 표현과 처리에 활용되고 있는 측면에서 부분적인 성과를 거둔 것. 비지니스, Ontology 온톨로지 기반 데이터 접근 방식 현재 데이터 분석 접근 방식에서 존재하는 데이터로 인사이트를 얻는다는 접근 방식은 효율적인 것일까. 어쩌면 garbage in, garbage out. 문제 해결 중심으로 데이터 흐름을 설계하는 것이 필요 특정 솔루션 없이도 하나의 일관된 접근 방식으로 다양한 문제를 해결하는 방식으로 설계하는 접근 방식이 필요함. 파운드리 문제 해결 중심 플랫폼. 파운드리는문제 해결에 필요한 데이터를 기술적으로 연결하고 시뮬레이션할 수 있는 도구. 기업의 핵심 문제를 Ontology를 통해 모델링하려는 것. 구성 요소 Objects : 데이터 기본 속성 Links : objects 연결 Actions : 정보 처리 방식 특징 플랫폼으로 시뮬레이션 기반 의사결정을 지원 확장성이 높은 구조 최소 인원으로 효율적인 문제 해결 가능 고객사의 기존 데이터를 온톨로지로 통합하여 빠른 솔루션 개발 가능 질문. 비지니스 문제는 다음의 질문을 통해 접근하기 시작. 무엇을 해결하고 싶은지? -\u0026gt; 어떤 의사결정을 할 것인지? -\u0026gt; 필요한 데이터는 무엇인지? 데이터 기반으로 질문을 던지는 것이 아니라(이미 주어진 데이터에서 유용한 무언가를 추출하겠다\u0026hellip;), 문제(수확한 감자와 고구마를 최대한 잘 팔겠다) 기반에 맞춰서 데이터를 활용하는 방식으로 가는 접근 방식을 채택. 구현 프로세스 구현 방식으로는 version 0의 온톨로지를 생성 후, 추가적인 수정을 거침. 고객사의 기존 데이터에 연결. 장점은 확장성이 높은 데이터 구조. 고객 비지니스와 기술자 간의 시너지를 극대화시키는 방향. Artificial Intelligence 이 중 온톨로지의 links 역할을 구현하는 방식에서 데이터 관리를 위해 artificial intelligence를 적용할 수 있음, 데이터 관리 분야에 AI를 적용. 주요 기능 Prompt Engineering Tools Orchestration Human-in-the-Loop Security \u0026amp; Audit 데이터 위치와 처리 방식을 관리하는 데 활용할 수 있음. 프롬프트 엔지니어링, 툴 오케스트레이션, 보안, 감사 및 로깅 등의 기능을 구현. Human-in-the-Loop 기능을 제공해 사람이 직접 개입하고, 고객이 원하는 LLM을 연결해 사용할 수 있도록 지원. 해당 온톨로지를 활용한 것의 강점은 데이터 준비 및 배포에서 강점을 가짐. 핵심 문제에 집중한 솔루션을 제공할 수 있고, 최소 인원과 짧은 시간 내 문제 해결이 가능함. 내부적으로 데이터 구조가 정체되거나 병목되는 현상을 처리하는 방식을 파악하는 것도 흥미로운 부분일 듯함. 일단 큰 문제는 핵심 문제에 다가가는 것. 핵심 문제. 비지니스 핵심. 핵심 에 대한 단어만 세 번 이상 언급. 그 만큼 핵심 문제는 파악이 어려움. Ontology, Topology 공통점 : 온톨로지와 토폴로지 모두 관계와 구조를 다룸. 차이점 : 온톨로지는 개념 간의 관계를, 토폴로지는 공간적 관계와 구조를 다룸. 주로 공간 관계를 표현할 때 해당 위상적 개념을 활용함. 토폴로지 관계 표현을 위해 특정 데이터 구조(Quadtree)를 사용할 수 있음. 이를 통하면 공간 개념과 의미론적 검색을 동시에 지원함. 토폴로지적 관계를 온톨로지에 통합하여 시스템의 공간 추론 능력을 향상시킬 수 있음. 동적인 위상학적 관계를 표현하고 추론. Reference: Applying Knowledge Inference on Event-Conjunction for Automatic Control in Smart Building\n해당 그림은 실제 빌딩에서 토폴로지 온톨로지를 적용시킨 것인데, 실제 문제 해결 기반 파운드리도 해당 그림처럼 layer 들의 조합으로 표현될 수 있을 듯하여 가지고 옴. 공간 정보를 다루는 시스템에서 개념 표현 및 추론 능력을 모델링하고 처리할 수 있을 듯함. context와 ontology를 통합하기 위한 툴로 토폴로지를 사용\u0026hellip;. Reference : Putting Things in Context: A Topological Approach to Mapping Contexts and Ontologies\nOntology, manifold 결국 ontology는 실재, 존재, 현실에 대한 개념. 특히 존재 및 실재에 관련해서 현실적 플랫폼에서 어떻게 표상/구현할 것인지(실재는 표상할 수 있지만 존재를 표상하는 게 가능할까)\n실재하는 데이터를 구현하거나, 직접적으로는 보이지 않지만 분명 존재한다는 걸 알고 있는 개념 혹은 데이터를 표상하는 방식이니 manifold한다고도 볼 수 있을 듯함\u0026hellip; 여러 온톨로지 관계를 매핑할 때, 하나의 공통된 특정 공간에 매핑하는 걸 manifold 한다고도 본다면, 특정 개념에 대해서 category 화가 되고 해당 관계에 대해서 표상화할 때, 고차원 개념이 저차원 플랫폼에 표현하는 것이 가능한지. 전환되는 과정에서 어떻게 손실이 일어날 것인지. 손실을 줄이기 위해서는 차원을 높이는 방법 밖에 없을까? 각 레이어 층을 통해 topology 구조로 가는 듯 보이기도 함. 그럼 결국 neural network 구조가 아닐까. AI를 사용했다고 하지만 들어보면 그저 중간 제어용\u0026hellip;어쩌면 마케팅을 위한 듯하고, 아예 LLM을 직접 구현할 필요는 없을 듯하고. 온톨로지 관련 objects, links, actions 관련해선 neural network, topology의 구조적 유사성과 관련해서 좀 더 암시해서 볼 수 있을 것 같음. 특히 objects 를 link 하는 과정에서. 마무리 Ontology의 철학적 접근 및 정보 과학의 접목 부분. 인간의 지식 체계와 기계의 지식 체계의 연결성. neural network 구조가 더 정답이 아닐까라는 건 개인적인 의견. 인간의 지식 체계는 amygdala, hippocampus, prefrontal cortex 등의 끊임없는 내부적 상호연결 및 외부 기록 도구인데, 기계의 지식 체계도 점점 인간을 닮아가지 않을까. Ontology 플랫폼 구현을 고차원 개념을 저차원 데이터 공간에 매핑하는 과정으로 해석했지만\u0026hellip; 다른 관점이 있을 수 있고 그게 궁금함. 온톨로지 기반 플랫폼의 핵심 강점은 확장성과 통합 가능성\u0026hellip; 이게 어떻게 작동되는지 아직은 의문. 보안, 제약, 철강, 국가 시설 등 다양한 분야에 같은 시스템 적용. 정말로 다양한 분야의 문제를 한 시스템, 온톨로지로 적용가능한 걸까. 온톨로지는 철학적 탐구에서 시작되었지만, 인공 지능 발전으로 실질적인 문제 해결 도구로 진화하고 있음. 다양한 관점에서 적용과 확장 가능성을 탐색해 볼 수 있음. 어쩌면 양자화 관련해서도 온톨로지 관점을 접목해볼 수 있지 않을까\u0026hellip; being 의 상태가 여러 개이고, existence가 다르게 표상되는 지점. 핵심 문제. ","permalink":"https://mhkim.dev/posts/8th_ontology/","summary":"\u003ch1 id=\"ontology란\"\u003eOntology란\u003c/h1\u003e\n\u003cp\u003eOntology의 철학적 정의\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u0026ldquo;Ontology\u0026quot;는 그리스어 \u0026ldquo;on(being)\u0026rdquo; 과 \u0026ldquo;logos\u0026rdquo;(study연구, discourse담론) 에서 유래.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e온톨로지는 being(존재), existence(실재), reality(현실)의 본질에 대해 연구하는 철학의 한 분야.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emetaphysics 의 핵심 영역이며, \u003cstrong\u003e존재(exist)\u003c/strong\u003e 하는 것들의 가장 기본적인 범주와 관계에 대해서 연구하는 것.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e아리스토텔레스는 존재 자체(being qua being)를 연구하는 학문이라고 보았고, 그 이후에 온톨로지를 General metaphysics, Special metaphysics로 구분하거나, formal ontology 혹은 regional ontology로 구분하려는 시도도 있음.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e온톨로지와 관련해서는 다음의 질문을 던짐.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e존재의 본질은 무엇인지,\u003c/li\u003e\n\u003cli\u003e있다면 어떤 종류로 구분될 수 있는지.\u003c/li\u003e\n\u003cli\u003e그 종류의 관계는 무엇인지.\u003c/li\u003e\n\u003cli\u003e존재와 비존재의 차이는 무엇인지.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e관련한 주요 연구 주제로는\u003c/p\u003e","title":"Ontology"},{"content":"Intro 가장 반짝이는 것\u0026hellip;\n어쩌면 AI 와 연관이 깊을 수도 있을 것 같아서 들은 내용을 정리하였습니다.\nGoogle Research 최근 AI연구자를 대상으로 Google Research 교류행사가 있어 참여하게 되었습니다. 총 4가지 주제를 다루었는데, NotebookLM, Med-Gemini, Project Astra, Connectomics 였습니다.\nNotebookLM은 https://notebooklm.google.com/\n여기에서 현재 베타버전으로 운영되고 있는데, 학습에 쓰이지 않는 모델이라고 합니다. 문서나 연구 자료를 대상으로 자동 요약하는 기능을 제공하고 있어서,\n학습자용도로 만들었다는 느낌이 강했습니다.\n구글은 몇 백개 서비스를 베타로 출시하고, 또다시 몇 백개 서비스가 금방 사라져버리기 때문에 호다닥 사용할 수 있으면 좋을 것 같습니다.\nMed-Gemini는 Gemini를 기반으로 한 의료 인공지능입니다. 특히 X-ray 영상을 분석해서 질병을 판단하는 비의료용 인공지능인데, 의료 이미지 분석을 중점적으로 다루고 있습니다.\nDeepVariant, HeAcoustics와 같은 도구들이 제공되고 있고, 해당 도구들은 깃허브에도 오픈소스로 존재하지만 일부는 승인을 통과하면 사용할 수 있습니다.\nDeepVariant는 유전자 변이를 분석하는 도구, (https://github.com/google/deepvariant)\nHeAcoustics는 음향 데이터를 통해 건강 상태를 분석하는 인공지능 툴입니다. (https://github.com/Google-Health/google-health/blob/master/health_acoustic_representations/README.md)\n추가적으로 Imaging Research 관련해서도 Path, CXR, Derm 등의 연구들이 이루어지고 있습니다 (https://github.com/Google-Health/imaging-research)\nProject Astra는 AI Agent 프로젝트입니다. 시퀀스에 따라서 물체를 기억하고 상호작용하는 인공지능을 만들어내는 프로젝트입니다. DeepMind의 기술을 기반으로 해서 상호작용합니다.\n예를 들어, 시연영상에서는 드론은 아니였지만 드론에 카메라를 달아서 알아서 물체를 보고 피하고, 빨간색 공을 발견해줘. 사람들이 모여있는 장소를 발견해줘. 하면 해당 자연어로도 상호작용해서 움직입니다.\n실제 데모 영상 :https://deepmind.google/technologies/gemini/project-astra/\nConnectomics는 (https://research.google/teams/connectomics/) 뇌의 신경망을 연구하는 분야입니다. 뇌의 복잡한 신경 연결망을 분석하고 시각화합니다.\n최근에 h01 연구에 대해서 소개해서 몹시 흥미롭게 들었습니다.\n인간의 뇌 영역을 이해하는 건\n인공신경망 구조를 이해하는 데 어쩌면 많은 영감을 주고 도움이 될 지 모릅니다.\nConnectomics 커넥토믹스는 인간 게놈 프로젝트와도 관련이 있습니다. 인간을 만드는 데 필요한 상세한 설명서 중 하나가 인간 게놈 프로젝트입니다.\n그리고\u0026hellip;\n이러한 프로젝트에서 영감을 받아서 인간의 뇌 연결 구조를 맵핑하고 싶다는 걸 바탕으로 진행되고 있는 것이 커넥토믹스입니다.\n뇌의 신경망이 어떻게 이루어져있고, 어떻게 활성화되는지 연구하는 분야는 커넥토믹스입니다.\n우리는 뇌가 어떻게 작동하는지 여전히 알아내지 못했고, 감각 시스템, 행동, 의식 모두 어떻게 행동하는지 모릅니다.\n개인적으로는 Attention is All you Need에서 트랜스포머(Transformer)의 인코더(Encoder)와 디코더(Decoder) 구조를 보면서, 마치 뇌의 베르니케 영역(Wernicke\u0026rsquo;s area)와 브로카 영역(Broca\u0026rsquo;s Area) 같다 라고 생각했습니다. 베르니케 영역은 언어 이해 와 관련이 있고, 브로카 영역은 언어 생성과 관련이 있는 영역입니다. 왜냐면 이 두 영역이 각각 다르게 손상된 환자들이 나타내는 증상은, 베르니케의 경우 언어를 이해하는 데 손상이 왔지만, 말을 하는 건 문제가 없었고, 반면, 브로카 영역의 경우 언어를 이해하는 건 문제가 없었지만, 실어증(브로카 실어증)이라는 증상이 나타났기 때문에 해당 뇌 영역이 언어이해와 언어생성 각각 독립적인 활동을 담당하는 구나를 알게 되고 뇌 영역의 활동을 파악할 수 있는 중요한 단서였습니다.\n커넥토믹스는 이런 뇌 전반적인 활동을 알아내는 활동(인지신경과학)과는 다르게,\n뇌의 세포와 세포 간 연결 구조를 맵핑하는 걸 목표로 하는 프로젝트입니다.\n각 세포가 어떤 종류의 세포들이고 어떻게 연결되어 있는지를 파악합니다.\nh01 project : 아주 얇은 인간의 뇌 조직을 고해상도로 촬영 이 뉴런은 교과서에서 자주 볼 수 있는 Neuron의 형태입니다. Pyramidal Neuron이라고도 하는데, L1 층을 제외하고 인간의 Cortex의 모든 층에서 볼 수 있습니다.\n돌기, 가지, dendrite, spiny 등이 다양하게 있습니다. 이런 뉴런의 형태를 볼 수 있는 건 h01와 같은 여러 프로젝트 덕분이기도 합니다.\nh01 프로젝트에서는 인간 Cortex의 약 1mm^3 샘플을 5,000개의 초박층으로 나누어 연구했다고 발표했습니다.\n이런 데이터를 처리하는 데는 약 326일 정도 시간이 걸리고,\n데이터 용량으로는 1.4 petabyte(PB)의 이미지의 데이터를 생성합니다. (대략 4k 비디오를 18년간 스트리밍하는 양과 비슷합니다)\n연구 결과로 57,000개의 세포와 1억 5천만개의 synapses, 230mm 의 혈관 등을 발견했다고 합니다.\n커넥토믹스 연구는 지렁이, 초파리, 생쥐, 인간 순으로 진화해오고 있는데,\n우선, 지렁이 연구의 경우에는 302개의 뉴런이 있으며,테라바이트 정도의 저장공간이 필요합니다. 1970년대에서 1980년대에 이루어졌습니다.\n초파리 연구는 2010년에서 2023년 사이에 이루어진 연구인데, 125,000개의 뉴런이 있음을 밝혀냈고, 수십 테라바이트 정도의 저장공간이 필요했습니다.\n일부 인간의 뇌 연구는 2018-2021년 사이에 잠깐 이루어졌던, 일부 인간의 뇌 연구에서는 16,087개의 뉴런을 밝혀냈고, 1.4 PB 저장공간을 차지했으며,\n생쥐의 hippocampus 해마 영역의 경우, 1,000,000개의 뉴런, 25 PB 저장공간이 필요하다는 걸 밝혀내고 있습니다. 2023 ~\n생쥐의 전체 뇌와\n인간의 전체 뇌 연구는 계속 해서 진화하고 있는데,\n생쥐는 대략 1억개 정도의 뉴런이 있을 걸로 추정하지만,\n인간의 뇌의 neurons은 대략 100,000,000,000 개 정도로 추정합니다. 해당 연구에는 exabytes 정도의 저장공간이 필요합니다.\n프로젝트의 복잡도와 비례해서 저장공간이 급수적으로 증가합니다.\n또한,\n커넥토믹스 연구에서 큰 관건은 촬영된 데이터들을 자동으로 세포 연결 구조로 재구성하는 과정입니다.\n이러한 이미지 세분화와 관련한 오픈 소스 툴들이 있는데, \u0026lsquo;Flood Filling Networks\u0026rsquo;라는 Convolutional Neural Network 방법을 개선해서 사용하는 것도 있고,\n\u0026lsquo;Segmentation guided contrastive learning\u0026rsquo; 이라는 Self Supervised 방식으로 3차원 데이터를 해석하는 방식입니다.\nFlood Filling Networks 로 세분화한 다음에 세포 경계를 식별하고, 각 이미지를 통해 개별 세포를 추적하는 방식입니다.\nNeurons Structures and Connections 제가 아는 건 Prefrontal Cortex 활성화와 관련한 기능적인 부분만 알고 있어서,\n쌀 한 알 크기보다 매우 작은 크기의 상세한 뉴런 구조와 커넥션 방식들은 몰랐습니다. 보면 볼 수록 정말 반짝이고 멋진 세계라고 생각합니다.\n매우 흥미로운 구조는\u0026hellip; 축삭 세포가 세포로 신호를 전달 받을 때, 이전에 볼 수 없었던 축삭 소용돌이가 다른 신경 세포 표현에 나타난다는 점?\n그리고 세포가 거울 이미지처럼 대칭적으로 서로 배열되는 것이 있다는 부분도 몹시 신기했습니다.\n그리고 이러한 뉴런들의 연결도 신기한 부분인데,\n드문 연결도 있는 데 그 중 하나의 axon이 타겟 neuron과 반복적인 시냅스 연결을 형성한다는 점\u0026hellip;\n뉴런이 다른 뉴런들로부터 신호를 전달 받을 수 있는 5,000개 이상의 axon들을 가지고 있고, axon에서 신호가 receiving neuron으로 전달되는 synapses 도 5,000개 이상으로 존재한 다는 점.\n에서 뉴런의 구조와 커넥션을 구경할 수 있었습니다.\nWhat\u0026rsquo;s Next h01 프로젝트의 다음 타겟은 인간의 hippocampus 부분이라고 들었습니다.\n이 부분은 인간 뇌 변연계 중추적인 부분입니다. 중추신경계 바로 위쪽에 자리잡으며 인간의 기억과 아주 긴밀한 역할을 하는 뇌의 영역입니다.\n해마와 관련한 중요한 예시로는, 아내를 모자로 착각한 남자 라고 신경과학자 분이 저술한 책을 보면 해마 영역이 손상되면 일상 생활의 기억들은 장기 기억으로 저장되지 못합니다.\n어떤 기억은 장기로 저장되고 어떤 기억은 단기로 잊히는 지에 대해서 많은 부분이 미스터리한데 hippocampus 영역을 밝히는 건 정말 기대가 되는 연구 프로젝트가 아닐까 싶습니다.\n해마와 관련한 뇌 뉴런들의 특성, 구조와 커넥션을 볼 수 있으면 분명히 뇌 손상 복구에도 도움이 될 걸로 보입니다.\n사실상 이러한 연구들이 뇌 질환의 치료법 찾는데 기여하고 있습니다. 예로 알츠하이머, 파킨슨 병과 같은 신경 질환의 원인을 이해하고 치료 방법을 찾는데 주요한 단서입니다.\n마무리 구글 리서치에서 발표한 뉴런의 structure, connections 부분을 보면서\u0026hellip;\n사실 이렇게 연결된 뉴런의 활성화나 기능적인 부분은 좀 더 다릅니다.\n특정 영역이 손상되었다고 해서 그 영역과 관련있는 기능이 손상되는 건 또 아니라는 증거들을 보긴 합니다.\n다른 뇌의 영역이 손상된 영역을 대신하여 활성화한다는 자료들은 꽤 있습니다. 신경 가소성이라고 손상된 부분을 대체해서 움직입니다.\n뇌의 작동 방식은 훨씬 복잡하고 경이롭다는 걸 느낍니다.\n신경 세포 하나하나 소개하는 걸 구경하는 것도 즐거웠습니다.\n커넥토믹스 소개 끝.\n","permalink":"https://mhkim.dev/posts/7th_connectomics_brain/","summary":"\u003ch1 id=\"intro\"\u003eIntro\u003c/h1\u003e\n\u003cp\u003e\u003cimg alt=\"pyramidal_neurons\" loading=\"lazy\" src=\"/posts/7th_connectomics_brain/pyramidal_neurons.png\"\u003e\u003c/p\u003e\n\u003cp\u003e가장 반짝이는 것\u0026hellip;\u003c/p\u003e\n\u003cp\u003e어쩌면 AI 와 연관이 깊을 수도 있을 것 같아서 들은 내용을 정리하였습니다.\u003c/p\u003e\n\u003ch1 id=\"google-research\"\u003eGoogle Research\u003c/h1\u003e\n\u003cp\u003e최근 AI연구자를 대상으로 Google Research 교류행사가 있어 참여하게 되었습니다.\n총 4가지 주제를 다루었는데, NotebookLM, Med-Gemini, Project Astra, Connectomics 였습니다.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNotebookLM은\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://notebooklm.google.com/\"\u003ehttps://notebooklm.google.com/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e여기에서 현재 베타버전으로 운영되고 있는데, 학습에 쓰이지 않는 모델이라고 합니다. 문서나 연구 자료를 대상으로 자동 요약하는 기능을 제공하고 있어서,\u003c/p\u003e\n\u003cp\u003e학습자용도로 만들었다는 느낌이 강했습니다.\u003c/p\u003e\n\u003cp\u003e구글은 몇 백개 서비스를 베타로 출시하고, 또다시 몇 백개 서비스가 금방 사라져버리기 때문에 호다닥 사용할 수 있으면 좋을 것 같습니다.\u003c/p\u003e","title":"Connectomics Introduction"},{"content":"Overview LLM Application 을 구축하기 위한 오픈 소스 개발자 프레임 워크와 관련해서\nLangchain CEO인 Harrison Chase가 https://www.deeplearning.ai/short-courses/\n에서 발표한 내용입니다.\nLangChain은 대규모 언어 모델(Large Language Model, LLM) 기반 애플리케이션을 구축하기 위한 오픈 소스 도구입니다.\nLangchain 관련 관심이 있다면 해당 short course를 들어보시길 권장드립니다.\n해당 수업을 들으면서 간략하게 정리했던 내용 공유합니다.\nLangChain 프레임워크의 다양한 구성 요소들은 다음과 같습니다: Prompts: 프롬프트 템플릿, 출력 파서, 재시도/수정 로직, 예시 선택기 등을 포함합니다. Models: LLM 통합 20개 이상, 채팅 모델, 텍스트 임베딩 모델 통합 10개 이상을 제공합니다. Indexes: 문서 로더, 텍스트 분할기, 벡터 저장소, 검색기 통합 10개 이상을 포함합니다. Chains: 다른 체인을 위한 빌딩 블록으로 사용할 수 있으며, 20개 이상의 다양한 애플리케이션 특정 체인이 있습니다. Agents: 5가지 이상의 에이전트 타입, LLM이 도구를 사용하도록 하는 알고리즘, 10개 이상의 에이전트 툴킷이 있으며, 특정 애플리케이션에 대한 특정 도구로 무장한 에이전트를 제공합니다. 이 프레임워크는 개발자가 LLM 기반의 애플리케이션을 쉽게 구축할 수 있도록 지원하며,\n다양한 구성 요소와 도구를 통해 필요에 맞는 맞춤형 솔루션을 개발할 수 있게 합니다.\nLangChain을 사용하여 데이터와 대화하는 방법 정리 1. Document Loading 데이터와 대화할 수 있는 애플리케이션을 만들기 위해서는 먼저 작업할 수 있는 형식으로 데이터를 로드해야 합니다. 이때 LangChain 문서 로더가 중요한 역할을 합니다. (80가지 이상의 다양한 유형의 문서 로더를 지원)\n문서 로더는 다양한 형식과 소스의 데이터를 접근하고 표준화된 형식으로 변환하는 구체적인 작업을 다룹니다. 데이터를 로드하고자 하는 곳은 웹사이트, 다양한 데이터베이스, YouTube와 같은 다른 장소가 될 수 있으며, 이 문서들은 PDF, HTML, JSON과 같은 다양한 데이터 유형으로 제공될 수 있습니다. 그래서 문서 로더의 전체 목적은 이러한 다양한 데이터 소스를 표준 문서 객체로 로드하는 것입니다. 이는 내용과 관련 메타데이터로 구성됩니다.\nLangChain에는 많은 종류의 문서 로더가 있으며, 모두를 다룰 시간은 없지만 80개 이상이 있다는 대략적인 분류를 보여줍니다. 많은 것들이 YouTube, Twitter, Hacker News와 같은 공개 데이터 소스에서 텍스트 파일과 같은 비구조화된 데이터를 로드하는 데에 초점을 맞추고 있으며, Figma, Notion과 같이 비구조화된 데이터를 로드하는 데에도 쓰일 수 있음.\n물론, 문서 로더는 구조화된 데이터를 로드하는 데에도 사용할 수 있습니다.\n2. Document Splitting 더 작은 조각으로 나누는 방법\n문서 분할은 데이터를 문서 형식으로 로드한 후, 그것이 벡터 저장소로 가기 전에 일어납니다. 이것은 매우 단순해 보일 수 있습니다. 각 문자의 길이에 따라 조각을 나눌 수도 있겠죠. 하지만 까다로운 작업입니다. 어떻게 조각을 나누느냐에 따라서,\n많은 뉘앙스와 중요성이 있어, 의미적으로 관련된 조각들이 함께 있도록 해야 합니다. Lang Chain의 모든 텍스트 분할자는 일정한 조각 크기와 일부 조각 중첩을 가지고 조각을 나누는 것을 기본으로 합니다. 우리는 조각의 크기를 측정하기 위해 길이 함수를 전달할 수 있게 합니다. 이것은 종종 문자나 토큰입니다.\n조각 중첩은 일반적으로 두 조각 사이에 조금의 중첩을 유지하는 것으로, 우리가 하나에서 다른 하나로 이동할 때 슬라이딩 윈도우처럼 작동합니다. 이것은 같은 맥락의 일부가 한 조각의 끝과 다른 조각의 시작에 있게 하여 일관성의 느낌을 생성하는 데 도움이 됩니다. Lang Chain의 텍스트 분할자는 모두 문서 생성 및 문서 분할 방법을 가지고 있습니다. 이것은 내부적으로 같은 논리를 포함하지만, 약간 다른 인터페이스를 노출합니다. 하나는 텍스트 목록을 입력으로 받고 다른 하나는 문서 목록을 입력으로 받습니다. Lang Chain에는 많은 다른 유형의 분할자가 있습니다\n3. Vectorstores and Embedding 이제 문서를 의미론적으로 의미 있는 작은 조각으로 나누었고, 이제 이러한 조각들을 색인에 넣어 데이터의 이 코퍼스에 대한 질문에 답할 때 쉽게 검색할 수 있게 할 시간입니다. 이를 위해 임베딩과 벡터 저장소를 활용할 것입니다.\n하지만 지금은 벡터 저장소와 임베딩에 대해 이야기해봅시다.\n이것은 텍스트 분할 후, 문서를 쉽게 접근할 수 있는 형식으로 저장할 준비가 되었을 때 발생합니다.\n임베딩이란? 텍스트 한 조각을 취하고 그 텍스트의 수치적 표현을 생성합니다.\n유사한 내용의 텍스트는 이 수치 공간에서 유사한 벡터를 가질 것입니다.\n이것이 의미하는 바는, 그 벡터들을 비교하고 유사한 텍스트 조각을 찾을 수 있다는 것입니다.\n아래 예에서, 우리는 애완 동물에 관한 두 문장이 매우 유사하다는 것을 볼 수 있으며, 애완 동물에 관한 문장과 자동차에 관한 문장은 별로 유사하지 않다는 것을 볼 수 있습니다. 전체 end-to-end 워크플로우를 상기시키기 위해, 문서로 시작해서, 그 문서들의 더 작은 분할을 생성하고, 그 문서들의 임베딩을 생성한 다음, 모든 것을 벡터 저장소에 저장합니다. 벡터 저장소는 나중에 유사한 벡터를 쉽게 찾아볼 수 있는 데이터베이스입니다. 이것은 손에 있는 질문에 관련된 문서를 찾으려고 할 때 유용해질 것입니다. 그때 손에 있는 질문의 임베딩을 생성하고, 벡터 저장소의 모든 다른 벡터들과 비교를 수행한 다음, 가장 유사한 n개를 선택할 수 있습니다. 그런 다음 가장 유사한 n개의 조각들을 질문과 함께 LLM으로 전달하고 답변을 받아냅니다.\n4. Retrieval (그림은 \u0026ldquo;Maximum Marginal Relevance (MMR)\u0026ldquo;이라는 개념을 설명하고 있습니다. 이는 정보 검색시 가장 관련성 높은 결과물만을 선택하는 것이 아니라, 다양한 결과물을 제공하기 위한 방법을 말합니다. 그림의 상단에서 요리사가 생각하는 구름 안에 \u0026ldquo;Tell me about all-white mushrooms with large fruiting bodies\u0026quot;라는 텍스트가 보이는데, 이는 검색 쿼리의 예시를 나타냅니다.\n그 아래에는 두 개의 응답 예시가 보입니다. 첫 번째 응답은 \u0026ldquo;The Amanita phalloides has a large and imposing epigeous (aboveground) fruiting body (basidiocarp).\u0026ldquo;라고 되어 있고, 이는 가장 관련성이 높은 응답입니다. 두 번째 응답은 \u0026ldquo;A mushroom with a large fruiting body is the Amanita phalloides. Some varieties are all-white.\u0026ldquo;라고 되어 있고, 이는 MMR을 사용하여 선택된 응답입니다. MMR을 통해 선택된 응답은 단순히 관련성이 높은 것뿐만 아니라, 제공된 정보의 다양성을 높이기 위해 선택된 것입니다.\n마지막으로, \u0026ldquo;AA. phalloides, a.k.a Death Cap, is one of the most poisonous of all known mushrooms.\u0026ldquo;라는 텍스트는 다른 관점에서 관련 정보를 제공하여, 검색 결과의 다양성을 더욱 향상시키는 예시를 보여줍니다.)\n이 그림은 사용자가 주어진 쿼리에 대해 가장 관련성이 높은 답변뿐만 아니라, 다양한 정보를 포함하는 답변을 받을 수 있도록 돕는 MMR의 개념을 시각적으로 설명하고 있습니다.\n지난 수업에서 의미 검색의 기본 사항을 다루고 이것이 많은 사용 사례에서 상당히 잘 작동한다는 것을 보았습니다. 하지만 몇 가지 경계 사례도 보고, 일부 상황에서 문제가 발생할 수 있음을 보았습니다. 이번 수업에서는 검색에 대해 심층 탐구하고 이러한 경계 사례를 극복하기 위한 몇 가지 더 진보된 방법에 대해 다룰 것입니다. 이것이 매우 흥미롭다고 생각합니다. 왜냐하면 검색은 새로운 것이며 우리가 이야기하는 많은 기술들이 지난 몇 달 동안 나타났기 때문입니다.\n\u0026ldquo;검색\u0026rdquo;\n질문이 들어왔을 때 가장 관련성 높은 조각들을 검색하고 싶을 때 중요합니다. 첫 번째로 다룰 것은 최대한변응답률(MMR)입니다. 만약 항상 임베딩 공간에서 질문과 가장 유사한 문서들만을 선택한다면, 한 경계 사례에서 보았듯이, 다양한 정보를 놓칠 수 있습니다. 이 예에서, 모든 하얀 버섯에 대해 묻는 요리사를 가지고 있습니다. 가장 유사한 결과를 보면, 첫 번째 두 문서가 될 것이며, 여기에는 과일체에 대한 정보와 전부 하얀색이라는 질문과 유사한 많은 정보가 있습니다. 하지만 우리는 정말로 그것이 매우 독성이 있다는 다른 정보도 얻고 싶어 합니다. 이것이 MMR을 사용하는 것이 중요한 이유 입니다. 다양한 문서 세트를 선택할 수 있도록 하기 때문입니다.\nMMR의 아이디어는 질문을 보내고, 그 다음에 \u0026ldquo;fetch_k\u0026quot;라는 우리가 제어할 수 있는 매개변수를 기반으로 얼마나 많은 응답을 받을지 결정하는 응답 세트를 초기에 받아옵니다. 이것은 오로지 의미론적 유사성에 기반합니다. 거기서부터, 그 더 작은 문서 세트와 함께 작업하여, 의미론적 유사성을 기반으로 한 가장 관련성 높은 문서뿐만 아니라 다양한 문서들도 최적화합니다. 그 문서 세트에서, 사용자에게 반환할 최종 \u0026ldquo;k\u0026quot;를 선택합니다.\n또 다른 검색 유형은 자가 질문입니다. 이것은의미론적으로 찾아보고 싶은 내용뿐만 아니라 일부 메타데이터에 대한 필터를 하고 싶은 언급을 포함하는 질문을 받을 때 유용합니다. 예를 들어, 1980년에 만들어진 외계인에 관한 영화는 무엇인가?라는 질문을 봅시다. 이것은 정말로 두 부분을 가지고 있습니다. 의미론적 부분, 외계인 비트입니다. 영화 데이터베이스에서 외계인을 찾고 싶어합니다. 하지만 이것은 또한 각 영화에 대한 메타데이터, 즉 연도가 1980년이어야 한다는 사실을 실제로 언급하는 부분도 가지고 있습니다. 할 수 있는 것은 언어 모델 자체를 사용하여 원래 질문을 두 가지 별개의 것으로 나누는 것입니다, 필터와 검색 용어. 대부분의 벡터 저장소는 메타데이터 필터를 지원합니다. 그래서 연도가 1980년인 것과 같은 메타데이터를 기반으로 기록을 쉽게 필터링할 수 있습니다.\n마지막으로, 압축. 검색된 구절들에서 가장 관련성 높은 부분들만 정말로 추출하는 데 유용. 예를 들어, 질문을 하고 저장된 전체 문서를 받아오더라도, 실제로 관련된 부분은 첫 번째 또는 두 번째 문장만일 수 있습니다. 압축을 사용하면, 그 모든 문서들을 언어 모델을 통해 실행하고 가장 관련성 높은 부분들을 추출한 다음, 가장 관련성 높은 부분들만 최종 언어 모델 호출에 전달할 수 있습니다. 언어 모델에 더 많은 호출을 하는 비용이 들지만, 최종 답변을 오로지 가장 중요한 것들에만 집중하는 데에 정말 좋습니다.\n5. Question Answering 주어진 질문에 대해 관련된 문서를 검색하는 방법을 살펴보았습니다. 다음 단계는 그 문서들과 원래의 질문을 언어 모델에 전달하고, 그것에게 질문에 대답하도록 요청하는 것입니다.\n이번 수업에서는 방금 검색한 문서를 사용하여 질문에 답하는 방법을 다룰 것입니다. 이것은 전체 저장 및 수집 작업을 마친 후, 관련된 조각들을 검색한 후에 이루어집니다. 이제 그것을 언어 모델에 전달하여 답을 얻어야 합니다. 일반적인 흐름은, 질문이 들어오고, 관련 문서를 찾은 다음, 그 조각들을 시스템 프롬프트와 인간의 질문과 함께 언어 모델에 전달하고 답을 얻습니다.\n기본적으로, 모든 조각들을 같은 컨텍스트 창, 같은 언어 모델 호출로 전달합니다. 하지만, 그것에 대한 장단점이 있는 몇 가지 다른 방법들을 사용할 수 있습니다. 대부분의 장점은 때때로 많은 문서가 있을 수 있고 단순히 모든 것을 같은 컨텍스트 창에 전달할 수 없는 경우에 옵니다. MapReduce, Refine, MapRerank은 짧은 컨텍스트 창의 이슈를 해결하기 위한 세 가지 방법입니다.\n6. Chat 문서를 불러오기로 시작했고, 그 다음에는 그것들을 분할했으며, 벡터 저장소를 만들었습니다.\n다양한 종류의 검색에 대해 이야기했고, 질문에 답할 수 있다는 것을 보여주었지만, 후속 질문을 처리할 수 없으며, 실제 대화를 가질 수 없습니다. 질문 답변 챗봇을 만들기 위해 마무리 작업 -\u0026gt; 채팅 이력이라는 개념을 추가할 것입니다. 이는 체인과 교환한 이전의 대화나 메시지를 의미합니다.\n이챗봇이 질문에 답변을 시도할 때 그 채팅 이력을 맥락으로 취할 수 있게 해줍니다. 그래서 만약 후속 질문을 한다면, 챗봇은 여러분이 무엇에 대해 이야기하는지 알 수 있을 것입니다.\n여기서 중요한 것은, 지금까지 이야기한 모든 멋진 검색 유형들, 자가 질의나 압축 같은 것들을 여기서도 확실히 사용할 수 있다는 것입니다. 이야기한 모든 구성 요소들은 매우 모듈화되어 있고 잘 맞춰질 수 있습니다. 여기에 단지 채팅 이력이라는 개념을 추가하는 것뿐입니다.\n제공된 그림은 대화형 검색 챗봇을 만드는 두 가지 접근 방식을 보여주고 있습니다. 이들은 대화형 인공지능 시스템을 구축하는 데 사용되는 아키텍처와 알고리즘을 설명합니다.\nConversationalRetrievalChain (왼쪽 그림)\n이 구조에서는 채팅 이력을 통해 사용자가 이전에 한 질문을 기반으로 새로운 질문을 할 때, 이를 고려하여 더욱 정확한 답변을 할 수 있도록 합니다. \u0026lsquo;Chat History\u0026rsquo;는 사용자와 시스템 간의 이전 대화를 기록합니다. \u0026lsquo;Condense LLM\u0026rsquo;은 채팅 이력을 요약하고, \u0026lsquo;Retriever\u0026rsquo;는 관련 데이터를 검색하여 사용자의 질문에 가장 적합한 정보를 찾아냅니다. \u0026lsquo;Relevant splits\u0026rsquo;는 검색 결과 중에서 사용자의 질문에 가장 적합한 부분을 선택합니다. 마지막으로 \u0026lsquo;LLM\u0026rsquo; (Large Language Model)은 선택된 정보를 바탕으로 사용자의 질문에 답변을 합니다. Modular Components (오른쪽 그림)\n이 접근 방식은 더욱 모듈화되어 있으며, 필요에 따라 추가적인 \u0026lsquo;Retriever\u0026rsquo;와 압축 기능을 추가할 수 있습니다. \u0026lsquo;Self-query\u0026rsquo;는 시스템이 스스로 질문을 생성하여 자신의 지식을 확장하는 방식입니다. \u0026lsquo;Map-reduce\u0026rsquo;는 대규모 데이터를 처리할 때 사용되는 프로그래밍 모델로, 데이터를 매핑(mapping) 단계에서 처리한 후 리듀스(reducing) 단계에서 결과를 합치는 작업을 수행합니다. 이 시스템도 마찬가지로 \u0026lsquo;LLM\u0026rsquo;을 사용하여 최종적인 답변을 생성합니다. 두 시스템 모두 대화형 질의응답 시스템에서 중요한 개념인 채팅 이력을 활용하여, 사용자의 질문에 대한 맥락을 이해하고 더욱 연관성 있는 답변을 제공하도록 설계되었습니다. 추가적인 구성 요소를 통해 시스템의 유연성과 기능을 확장할 수 있는 가능성을 보여줍니다.\n\u0026ldquo;Stand-alone question\u0026quot;이라는 용어는 독립적인 질문을 의미합니다. 즉, 이 질문은 이전의 대화나 맥락에 의존하지 않고 혼자서도 충분히 이해하고 답변할 수 있는 질문입니다. 대화형 시스템에서는 이전 대화의 맥락에 의존하는 질문(예: \u0026ldquo;그는 어떻게 그렇게 했나요?\u0026rdquo; 또는 \u0026ldquo;그 다음에 무슨 일이 일어났나요?\u0026quot;)과 달리, stand-alone 질문은 대화의 이전 부분을 참조하지 않아도 명확하고 완전한 정보를 제공합니다(예: \u0026ldquo;뉴욕의 인구는 얼마입니까?\u0026rdquo; 또는 \u0026ldquo;Amanita phalloides 버섯은 독성이 있나요?\u0026rdquo;).\nConclusion 해당 강좌에서는, LangChain을 사용하여 80가지 이상의 다양한 문서 로더를 사용해 다양한 문서 소스에서 데이터를 로드하는 방법이 나옵니다.\n문서를 조각으로 나누고, 이 작업을 수행할 때 발생하는 많은 미묘한 점들에 대해 이야기했습니다. 그 후, 그 조각들을 위해 임베딩을 생성하고, 그것들을 벡터 저장소에 넣어, 의미론적 검색을 쉽게 가능하게 하는 방법을 보여줍니다.\n하지만 의미론적 검색의 단점과, 특정 경계 사례에서 실패할 수 있는 지점에 대해서도 이야기합니다. 다음으로 다룬 것은 검색. 가장 흥미로운 부분이죠\u0026hellip;.\n여기서 그 경계 사례들을 극복하기 위한 많은 새롭고 진보된, 정말 재미있는 검색 알고리즘에 대해 이야기합니다.\n그 다음 세션에서는 LLM과 결합하여, 검색된 문서들과 사용자의 질문을 LLM에 전달하고, 원래 질문에 대한 답변을 생성합니다. 그리고 검색 기록을 통해 이전 이력들. 채팅 이력이 추가 되어 end-to-end ChatBot이 완성됩니다.\n강좌에는 코드도 함께 있는데 코드는 심플해서 읽기 편합니다.\nCEO가 설명하면서 몹시 재밌고 흥미로워하는 게 해당 영상의 포인트입니다.\n끝.\n","permalink":"https://mhkim.dev/posts/6th_langchain/","summary":"\u003ch1 id=\"overview\"\u003eOverview\u003c/h1\u003e\n\u003cp\u003eLLM Application 을 구축하기 위한 오픈 소스 개발자 프레임 워크와 관련해서\u003c/p\u003e\n\u003cp\u003eLangchain CEO인 Harrison Chase가 \u003ca href=\"https://www.deeplearning.ai/short-courses/\"\u003ehttps://www.deeplearning.ai/short-courses/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e에서 발표한 내용입니다.\u003c/p\u003e\n\u003cp\u003eLangChain은 대규모 언어 모델(Large Language Model, LLM) 기반 애플리케이션을 구축하기 위한 오픈 소스 도구입니다.\u003c/p\u003e\n\u003cp\u003eLangchain 관련 관심이 있다면 해당 short course를 들어보시길 권장드립니다.\u003c/p\u003e\n\u003cp\u003e해당 수업을 들으면서 간략하게 정리했던 내용 공유합니다.\u003c/p\u003e\n\u003ch1 id=\"langchain-프레임워크의-다양한-구성-요소들은-다음과-같습니다\"\u003eLangChain 프레임워크의 다양한 구성 요소들은 다음과 같습니다:\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePrompts\u003c/strong\u003e: 프롬프트 템플릿, 출력 파서, 재시도/수정 로직, 예시 선택기 등을 포함합니다.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModels\u003c/strong\u003e: LLM 통합 20개 이상, 채팅 모델, 텍스트 임베딩 모델 통합 10개 이상을 제공합니다.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIndexes\u003c/strong\u003e: 문서 로더, 텍스트 분할기, 벡터 저장소, 검색기 통합 10개 이상을 포함합니다.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChains\u003c/strong\u003e: 다른 체인을 위한 빌딩 블록으로 사용할 수 있으며, 20개 이상의 다양한 애플리케이션 특정 체인이 있습니다.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAgents\u003c/strong\u003e: 5가지 이상의 에이전트 타입, LLM이 도구를 사용하도록 하는 알고리즘, 10개 이상의 에이전트 툴킷이 있으며, 특정 애플리케이션에 대한 특정 도구로 무장한 에이전트를 제공합니다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e이 프레임워크는 개발자가 LLM 기반의 애플리케이션을 쉽게 구축할 수 있도록 지원하며,\u003c/p\u003e","title":"LangChain Chat with Your Data - Harrison Chase"},{"content":"MetaCognition이란 “Cogito ergo sum,” 이 말은 데카르트가 주장한 “나는 생각한다 고로 나는 존재한다” 라는 의미를 지닌 구절이다. 스스로의 생각과 행동에 대해서 숙고하는 능력은 인간을 다른 종과 구별할 수 있게 해주는 뚜렷한 특징 중 하나이다. 인간으로서 우리는 무엇을 지각하고 있는지를 알고, 무엇을 배우고, 그것을 위해 무엇이 필요한지 판단하고 미래 행동의 결과를 예측할 수 있다. 더욱이 상상과 현실을 구별하고 스스로의 반응을 평가하고 미래에 대한 계획을 세울 수 있다. 즉, 이러한 능력들이 바로 인간이 가진 상위 인지 능력들이다.\n이러한 상위 인지 즉, 메타인지(metacognition)에서 “meta”는 그리스어로서 “이후(after)”, “그 위의(beyond)”의 뜻을 나타내는 접두사이다. 그러므로 메타인지 용어는 “인지에 대한 인지(cognition about cognition)” 혹은 “생각에 대한 생각(knowing about knowing)”(Jacobs, \u0026amp; Paris, 1987)을 나타낸다. 메타인지는 생각, 기억, 행동의 의식적 혹은 자동적인 통제라고 알려져 있다(Metcalfe\u0026amp; Shimamura, 1994). 다르게 말하자면, 메타인지는 스스로의 인지적 처리과정에 대한 평가와 통제를 말한다(Shimamura, 2000). 메타인지 연구는 학습, 마음 이론, 교육 심리와 같은 분야에서 다양하게 연구되어 왔다(Metcalfe \u0026amp; Shimamura, 1994). 메타인지는 자신의 인지에 대한 지식(knowledge)과 조절(regulation)의 두 가지 측면을 포함하는데, 최근 메타인지 관련 연구들에서는 사고과정과 문제 해결 과정을 조정하는 집행적 인지 기능으로서 강조되고 있다(Shimamura, 2000).\n메타인지와 관련해서 다음과 같은 쉬운 예를 들 수 있다. 외워야 할 목록들을 완벽하게 기억할 때까지 공부하라고 학령 아동들에게 지시한다(Flavell, 1979). 높은 학년 아이들은 완벽하게 외웠다고 말하면 대체로 실제로도 완벽하게 기억하였지만, 저학년 아이들은 스스로가 완벽하게 외웠다고 말을 하지만 실제로는 외우기를 시켜보면 기억하지 못하였다. 즉, 이러한 현상들은 어린 아동이 자신의 인지에 대한 인지, 메타인지(metacognition)가 부족하다는 것을 나타낸다고 할 수 있다(Flavell, 1979). 즉, 메타 인지는 자신의 기억, 이해력 그리고 다른 인지적 능력들에 대한 감시 혹은 모니터링(monitoring)을 말한다. 이러한 능력은 이해력, 독해력, 작문, 언어 획득, 기억, 문제 해결과 같은 자기 통제가 필요한 영역에서 중요한 역할을 한다.\n그렇다면, 인지(cognition)와 메타인지(metacognition)는 어떠한 차이점이 있는 걸까? 사실상, 인지와 메타인지는 뚜렷하게 구분이 되기 보다 밀접하게 연관이 있고 겹치기도 한다. 다음과 같은 예를 들 수 있다. 인지적 기술(cognitive skills)은 과제를 수행하기에 필요하고, 반면 메타인지는 어떻게 과제를 수행하였는지 이해하기에 필수적이다(Schraw, 1998). 혹은 과제 수행 전략(strategy)에서 다음과 같은 차이가 날 수 있다. 인지적 전략은 인지적 처리과정(cognitive processes)을 만들고(“making”), 메타인지적 전략은 인지적 처리과정(cognitive processes)을 감시(monitoring)한다는 것이다(Flavell, 1979)\n메타인지의 종류 메타인지는 메타인지적 지식(metacognitive knowledge), 메타인지적 경험(metacognitive experiences), 메타인지적 조절(metacognitive regulation), 이 세 가지 요소들로 나눌 수 있다(Flavell, 1979). 혹은 다른 연구에서는 메타인지를 지식(knowledge of cognition)과 조절(regulation of cognition)과 같은 2가지 요소로 나누기도 한다(Schraw, 1998). 메타인지적 지식은 나는 언어보다 산수를 잘해와 같은 자신의 지식에 대해서 알고 있는 것이다. 메타인지적 경험은 다른 사람이 방금 말한 것을 이해하지 못했다고 스스로 느끼는 것과 같은 인지적 혹은 정서적 경험을 말한다. 메타인지적 조절은 인지적 그리고 학습적 경험들의 조절이다.\n1. 메타인지적 지식(metacognitive knowledge) 메타인지적 지식은 사람(person), 과제(task), 전략(strategy)의 세가지 주요 범주로 나누어볼 수 있다(Flavell, 1979). 사람(person) 범주는 인지적 처리과정으로써 스스로나 다른 사람의 본성에 대해서 믿고 있는 모든 것이다. 즉, 당신이 독해보다 듣기를 잘한다는 것 그리고 당신 친구가 다른 사람들보다 더 사회적 사람이라는 것이 그 예시이다. 과제(task) 범주는 인지적 처리 동안 정보의 양이 많고 적고, 친숙하고 혹은 친숙하지 않고, 잘 짜여 있거나 그렇지 않는 등의 정보에 관한 것이다. 예를 들면, 같은 양의 정보라도 다른 사람들보다 이 정보가 더 어렵겠다는 것을 아는 것이다. 전략(strategy) 범주는 목표를 성취하기 위해서 어떤 효율적인 전략이 필요할지에 대해서 아는 것이다. 예를 들어서, 주요 요점에 집중하고 반복해서 외워서 스스로의 언어로 되뇌어보는 것이 학습에 효율적인 방법이라는 것을 스스로 아는 것이다. 메타인지적 지식은 사람, 과제, 전략 이 세 가지의 상호작용 혹은 연합으로 이루어지는데, 이를 테면 친구 A가 과제 X에서 전략 B를 사용해야 한다는 것을 아는 것이다.\n혹은 메타인지적 지식이 서술적 지식(declarative knowledge), 절차적 지식(procedure knowledge), 조건적 지식(conditional knowledge)와 같은 세부적인 요소로 이루어졌다고 주장하기도 한다(Jacobs\u0026amp; Paris, 1987; Schraw, 1998). 서술적 지식은 어떤 것에 “대한(about)” 지식이다(Schraw, 1998). 다르게 말하자면 학습자로서의 스스로에 대한 지식이다. 예를 들면, 학생들은 친숙한 주제와 이전 지식이 읽는 속도와 이해에 영향을 미친다는 것을 아는 것이다. 절차적 지식은 어떤 것을 “어떻게(how)”하는 것을 아는 지식이다(Jacobs\u0026amp; Paris, 1987). 학생들은 어떻게 쓱 읽어보고, 어떻게 요약할지, 어떻게 읽는 동안 주요 주제를 잡아낼지 아는 것이다. 조건적 지식은 “왜(why)”와 “언제(when)”을 아는 지식이다(Schraw, 1998). 서술적 지식과 절차적 지식들을 언제 그리고 왜 사용할 건지를 아는 것을 의미한다. 예를 들어, 공부 잘하는 학생들은 어떤 챕터를 다시 읽어봐야 하는지에 대해 알고 있다. 절차적 지식은 학생들이 효율적으로 공부 시간을 할당하도록 하는데 필요하다.\n2. 메타인지적 경험(metacognitive experience) 메타인지적 경험들은 현재 진행중인 인지적 능력 관련 경험들을 말한다. 메타인지적 경험들은 지속시간이 짧을 수도 길수도 있고 내용이 간단할 수도 혹은 복잡할 수도 있다(Flavell, 1979). 메타인지적 경험은 메타인지적 지식, 인지적 행동 혹은 전략에서 매우 중요하다. 첫 번째로, 그들은 새로운 목표를 설정하거나 이전의 것을 버리게 만든다. 두 번째로는, 메타인지적 경험은 메타인지적 지식들을 삭제하거나 수정하는 데 영향을 준다. 마지막으로 메타인지적 경험은 목표에 대한 전략을 짤 수 있다. 시험 전날에 어느 파트 부분이 부족하다는 것을 경험하면(메타인지적 경험) 당신은 그 파트 부분만 시험 전날에 훑어 본거나(인지적 전략), 스스로 질문을 하면서 얼마나 질문에 잘 대답할 수 있는지 알아내는 것(메타인지적 전략)이다.\n3. 메타인지적 조절(metacognitive regulation) 메타인지적 조절(metacognitive regulation)은 인지를 조절하는 과정을 말한다. Nelson과 Narens(1990)는 메타인지적 조절을 상향(bottom-up)처리과정인 인지적 감시(cognitive monitoring)과 하향(top-down) 처리과정인 인지적 통제(cognitive control)으로 구성되어 있다고 주장하였다. 인지적 감시는 에러 탐지, 기억 인출에서 출처 감시(source monitoring)가 있고 인지적 통제는 갈등 해결, 에러 수정, 억제 통제, 계획, 자원 할당이 있다(Fernandez-Duque, Baird, \u0026amp; Posner, 2000). 이와 관련한 설명은 이후 메타 인지와 집행 통제와 관련성에서 Nelson \u0026amp; Narens 모형에서 살펴볼 것이다.\nSchraw(1998)는 메타인지를 인지의 지식과 인지의 조절(Regulation of cognition)로 나누었다. 이 때 메타인지의 조절은 학생들이 스스로의 학습을 통제하도록 도와주는 활동들이라고 할 수 있다. 이 때 메타인지적 조절은 훈련을 통해서 향상될 수 있다고 가정한다(Schraw, 1998). 어린 학생들이 교사의 지시를 통해서 메타인지적 기술들을 획득하는 연구들이 이를 지지한다(Jacobs \u0026amp; Paris, 1987). 덧붙여, 메타인지적 조절은 한정되어 있는 주의 자원을 효율적으로 배분하는 것, 현재 가지고 있는 전략들을 잘 사용하는 것, 이해하는 것을 실패한 것을 잘 아는 것을 포함한다.\n메타인지와 관련된 이전 연구들에서는 메타인지적 조절 기술들을 크게 세 가지로 구분해 볼 수 있다고 주장한다(Jacobs \u0026amp; Paris, 1987; Schraw, 1998). 계획(planning), 감시(monitoring)(Schraw, 1998) 혹은 조절(regulation)(Jacobs \u0026amp; Paris, 1987), 평가(evaluation)이다. 계획은 적절한 전략들을 선택하고 주의 자원을 분배하는 것을 말한다. 감시 혹은 조절은 이해력과 과제 수행 진행 상황에 대해서 인식하는 것이다. 그리고 계획과 전략들이 어떻게 잘 사용할지에 대해서 조정하고 변경하는 것이다. 평가는 스스로 학습의 효율성과 결과물에 대해서 평가해보는 것이다. 이러한 조절 기술들에 대해서 예시는 King(1991)이 아동들의 학습 능력을 높이기 위해서 개발한 조절 체크리스트(regulatory checklist; RC)에서 알아볼 수 있다. King의 체크리스트는 계획, 감시, 평가, 각 항목당 체크리스트가 4가지씩 들어가 있다.\n메타 인지와 집행 통제 메타 인지와 집행 통제의 관련성 메타인지는 집행적 기능과 밀접하게 관련이 있는데 이는 메타인지가 정보 처리과정들을 감시하고 통제하는 능력을 가지고 있기 때문이다. 메타 인지와 집행적 통제 모두 인지적 처리과정에서 하향 조절(top-down modulation)을 한다(Shimamura, 2000). 즉 메타인지는 선택적 주의, 갈등 해결, 에러 탐지, 억제 통제와 같은 집행적 통제 처리과정이라고도 볼 수 있다. 이러한 것은 메타인지와 집행적 통제가 관련이 있다는 것을 지지하지만, 메타 인지와 집행 통제에 대한 대다수 연구들은 개별적으로 이루어져왔다(Metcalfe\u0026amp; Shimamura, 1994; Shimamura, 2000). 예를 들면 메타 인지에 대한 연구들은 학습, 아동 심리 분야에서 활발하게 이루어져왔고, 집행 통제에 대한 연구는 뇌 손상 환자들을 통해서 이루어져왔다.\n1) Nelson and Narens 모형– object level and meta-level 메타 인지와 관련하여 잘 알려진 Nelson과 Narens의 이론에서는 인지적 처리과정은 메타 수준(meta-level)과 대상 수준(object-level) 두 가지로 나뉘어 질 수 있다고 주장한다(Nelson \u0026amp; Narens, 1990; Fernandez-Duque et al., 2000). 대상 수준과 메타 수준의 상호작용이 메타인지라고 주장하는데 이 모형에서는 두 가지 특징들이 있다(Metcalfe\u0026amp; Shimamura, 1994). 첫 번째는 인지적 처리과정을 두 가지 혹은 그 이상의 수준들로 나누었다는 것이다. 두 번째는 메타 인지적 시스템이 우위 관계를 가진다는 것이다. 즉 정보의 흐름 방향이다. Nelson과 Narens 모형에서는 이러한 정보의 흐름을 “통제(control)”과 “감시(monitoring)”으로 나누었다. 통제는 정보가 메타 수준에서 대상 수준으로 흐르는 것이고 감시는 정보가 대상 수준에서 메타 수준으로 가는 것을 말한다. 또 하나 주목해야 할 것은 이 모형에서는 메타 수준(meta-level)은 대상 수준(object-level)을 포함한다.\n“통제(control)” Nelson과 Narens는 통제(control)를 전화와 관련해서 말하는 것(speaking)으로 비유했다(Metcalfe\u0026amp; Shimamura, 1994). 즉 메타 수준은 대상 수준을 수정하거나 바꾼다. 그러나 대상 수준이 메타 수준을 변화시킬 수는 없다. 이러한 것은 대상 수준에서 행동에 변화를 주는데, 행동을 시작하거나 행동을 계속하게 하거나, 행동을 멈추게 한다. 그러나, 이러한 수행을 하기 위해서는 메타 수준은 지속적으로 정보를 갱신하는 것이 필요하다. 즉, 감시(monitoring) 과정이 있어야 한다. 이를 통해 대상 수준에서 이루어지는 수행들을 시작하거나 멈추게 함으로써 통제할 수 있다. 통제는 무엇을 배울 것인지 선택하고, 공부시간을 할당하고, 공부를 끝내는 것, 탐색 전략을 선택하는 것, 검색을 끝내는 것을 포함한다(Metcalfe\u0026amp; Shimamura, 1994).\n“감시(monitoring)” 통제하기 위해서는 현재 상태에 대한 정보가 필요하다. 감시(monitoring)는 듣는 것(listening)으로 비유할 수 있다(Nelson \u0026amp; Narens, 1990). 메타수준은 대상수준으로부터 정보를 전달받는다. 감시는 이전에 회상한 반응에 대한 판단인 회상 감시(retrospective monitoring)와 미래 반응에 대한 판단인 미래 감시(prospective monitoring)으로 나누어 볼 수 있다(Metcalfe\u0026amp; Shimamura, 1994). Nelson과 Narens는 미래 감시를 세 가지 카테고리로 나누었다: Ease-of-Learning(EOL), Judgements of learning(JOL), Feeling-of-Knowing(FOK)(Metcalfe\u0026amp; Shimamura, 1994). Ease-of-Learning (EOL) 판단은 습득 이전(in advance of acquisition) 에 일어나며 무엇이 배우기 쉽거나 어려울지에 대한 예측을 말한다. Judgements of learning (JOL)은 습득 동안 혹은 이후(during or after acquisition)에 일어나며 현재 회상할 수 있는 목록에 대한 예측을 말한다. Feeling-of-Knowing(FOK)은 기억 유지 시간과 같은 습득 동안 혹은 이후(during or after acquisition)에 일어나며 현재 회상 할 수 없는 항목을 알고 있는지 없는지 혹은 이후 검사에서 기억할 수 있는지 없는지에 대한 판단을 말한다.\n집행적 주의 모델과 메타 인지 모델 Norman과 Shallice(1986)이 제안한 집행적 주의 모델도 Nelson과 Narens(1994)의 메타 인지 모형과 유사하다(Fernandez-Duque et al., 2000). 메타 인지 모형에서는 메타 수준과 대상 수준의 상호작용이 있다면, 집행적 주의 모델에서는 집행적 시스템(Executive system)과 도식(Schemas)간의 상호작용으로 이루어진다. 집행적 통제(executive control)이 없다면 정보는 도식(schemas)에 의해서 자동적으로 처리된다. 집행적 통제가 없다면 정보 처리과정에는 유연성이 없을 것이다.\nNorman과 Sahllice(1986) 모형에서는 집행적 시스템이 도식에 미치는 영향을 활성과 억제로 나타내었고, 도식이 집행적 시스템에 미치는 영향을 피드백(feedback)으로 나타내었다. 이 모형이 메타 인지 모형과 유사한 점은 메타 인지 모형에서 대상 수준은 도식과 행동과 생각의 기초적 부분을 포함한다는 것이다. 외부적으로 환경 단서에 의해서 도식들은 도식들, 행동, 생각들이 대상 수준에서 활성화 된다. 그리고 메타인지적 혹은 집행적 통제는 이전에 만들어진 도식이 없는 새로운 상황에서 행동을 이끌어 가는데 중요하다. 도식들은 집행적 시스템으로부터 내부적으로 활성화된다. 도식 선택은 상향식(bottom-up)인 감각 그리고 하향식(top-down)인 주의적 조절 모두에 달렸다.\n즉 이러한 메타인지적 그리고 집행적 통제는 특정 목표를 획득하는데 필요한 도식이 없을 때 행동을 적절할 수 있도록 한다. 의사 결정, 문제 해결, 전략 선택, 비일상적인 행동의 수행을 하는데 두 모델 모두 필수적이다(Fernandez-Duque et al., 2000).\n2) 메타 인지와 작업 기억 메타 인지와 집행적 처리과정이 밀접한 관련이 있다는 것은 메타 인지와 작업 기억과의 관련을 통해서도 알아 볼 수 있다(Fernandez-Duque et al., 2000; Shimamura, 2000). 작업 기억은 정보의 일시적 활성 그리고 저장과 관련한 처리과정을 말한다. Baddeley에 따르면, 작업 기억은 음운적 고리(phonological loop), 시공간 잡기장(visuospatial sketchpad), 일화적 완충기(episodic buffer) 세 가지 저장 완충기에 있는 정보를 통제하는 중앙 집행기(central executive)라고 주장한다. 음운적 고리는 span 과제와 같은 언어적 작업 기억 과제에서 수행을 돕는다고 알려져 있다. 시공간 잡기장은 시각적 공간적 정보와 관련해 사용된다. 일화적 완충기는 장기기억과 의미적 정보들을 연결시킨다. 집행 통제는 작업 기억에 있는 정보를 선택, 활성화, 조절하는 것과 관련한 처리과정이라고 할 수 있다. 집행 통제는 이러한 세 가지 시스템에 주의를 할당하고 시스템에서 온 정보를 해석한다.\n이러한 작업 기억에서 중앙 집행이 메타인지적 처리과정을 포함하거나 같다고 주장하는 연구들이 있다(Hanten, Levin, \u0026amp; Song, 1999; Shimamura, 2000). 앞서 언급했던 Nelson-Narens의 모형에 적용시킨다면 대상 수준의 정보들은 작업 기억에서 감시되고, 정보의 하향 통제를 관련 집행 통제는 메타 수준의 통제와 관련이 있다고 볼 수 있다(Shimamura, 2000).\n작업기억과 관련한 집행기능의 네 가지 측면으로 선택(selecting), 유지(maintaining), 최신화(updating), 경로변경(rerouting)을 들 수 있다(Shimamura, 2000). 선택은 자극에 주의를 기울이는 능력이다. 예를 들면 스트룹 과제와 같은 갈등 상황에서 어떤 종류의 특징을 선택적으로 걸러내야 한다. 유지는 작업 기억에서 정보를 계속 활성화 시키는 것이다. 숫자 외우기 과제에서 이러한 처리과정이 필요하다. 최신화는 작업 기억에서 활성을 조절하고 재배열하는 능력이다. 예를 들어 n-back과제에서 참가자들은 작업 기억의 정보를 유지시킬 뿐만 아니라 정보를 계속해서 업데이트시켜야 한다. 작업기억에서 반응을 갱신시키는 것의 실패는 보속증(perseveration)을 이끈다. 경로변경은 한 인지적 처리과정에서 다른 처리과정으로 전환시키는 능력이다. 이러한 네 가지의 측면들은 전두 피질의 활성과 밀접하게 관련이 있다고 제기된다(Posner, Petersen, Fox, \u0026amp; Raichle, 1988). 메타 인지와 관련하여서도 메타 인지적 조절을 계획(planning), 감시(monitoring)인 세 가지로 구분하였다. 즉, 작업 기억과 관련한 선택, 유지, 최신화, 경로변경과 메타 인지적 조절인 계획, 감시, 조절은 모두 하향 통제이고, 이러한 능력이 주의를 할당하고 과제를 수행하는데 중요한 역할을 한다는 점에서 공통점을 가지고 있다.\n이와 관련한 자세한 예시로는 음운적 작업 기억에 손상을 받은 아동들이 언어 습득에서의 낮은 발달과 관련이 있다는 연구가 있다(Hanten, Levin, \u0026amp; Song, 1999). 작업 기억과 언어 이해는 밀접한 관련이 있다고 알려져 왔다. 작업 기억 손상을 받은 아동들이 문법 의미적 처리과정에서 어려움을 보였고, 또한 언어 이해와 관련 메타인지적 요소에서도 어려움을 보였다. 이 연구에서는 작업 기억과 아동의 언어 이해에 메타인지적 능력이 매개한다고 주장하였다(Hanten et al., 1999).\n3) Metcalfe’s CHARM model 메타 인지와 새로움 감시(novelty monitoring)에 대한 계산적 모델(computational model) 중 하나가 Metcalfe의 CHARM(composite holographic associative recall/recognition) 모델이다(Metcalfe, 1993). 이 모델에서는 “알고 있는 느낌(feeling of knowing; FOK)”과 같은 메타인지적 평가는 새로운 정보와 이전에 저장된 기억 간의 친숙성(familiarity)에 기초한 계산으로 이루어진다고 제시한다. 이러한 작업의 결과로 “새로움 감시(novelty monitoring)”가 이루어질 수 있다고 주장한다. 이 모형에서 중요한 점은 감시 통제인데, 감시 통제가 없다면 이 모형은 제대로 작동하지 않는다.\n일화 기억 시스템은 감시하고 통제하는 시스템을 필요로 한다(Metcalfe \u0026amp; Shimamura, 1994). Nelson과 Narens 모델에서는 일화 기억을 대상-수준으로, 감시하고 통제하는 시스템은 메타 수준으로 볼 수 있다. 이러한 메타 수준은 연결시키고 저장시키는 기억 시스템과는 다른 특징을 지닌다. 감시와 통제 시스템은 들어오는 정보의 새로움과 친숙함을 평가하고 그 사건들에 인지적 자원을 할당할 것이다. 또한 감시와 통제 시스템은 우리 스스로의 인출 전략의 선택을 평가하고, 공부 시간을 결정하는 등의 학습에 대한 평가도 가능하게 해준다. Metcalfe의 모델에서는 새로움과 친숙성 감시(novelty and familiarity monitoring)이 알고 있는 느낌(feeling of knowing) 판단과 어떻게 관련이 있는지에 대해서 초점을 두었다. 즉 새로움이나 친숙함 평가는 “느낌(feelings)”과 같은 주관적 평가라고 생각할 수 있다. 만일 참가자들이 빠른 새로움 탐지 시스템을 사용한다면 목표에 대한 인출된 정보보다 단서의 친숙성이 FOK 판단과 관련이 있다고 제안한다.\nMetcalfe 모델에서“feeling of knowing”, 알고 있는 느낌은 이러한 새로움 감시 처리과정의 결과로 나오는 감정이다. 예를 들어, 나는 이것을 있다는 느낌이 들어 혹은 알지 못하는 느낌이 들어라고 사람들은 자신의 느낌을 감지한다. 즉, 친숙성을 감시했으면 안다고 느낄 것이고 새로움을 감시했으면 모른다고 느끼는 것이다. 단순히 감시하는 것은 항목에 대한 어떠한 정보도 주지 못한다. 언제 어디에서 이 항목을 경험했는지 알 수 없다. 즉 감시는 항목에 대한 내용 지식, 서술적 지식으로부터 분리된 것이다.\n4) 이외의 모델들 집행적 통제와 작업기억과 관련한 계산적 모델이 있다(Kimberg and Farah, 1993). 집행적 통제가 작업 기억에서 정보들이 얼마나 효율적으로 연결되어 있는지에 따라 이루어진다는 것이다. 효율적인 연결성은 작업기억이 과제 관련 처리과정을 유지시키는 등의 적절한 항목들을 선택할 수 있게 한다. 예를 들면 스트룹 검사에서 참가자들은 색상 단어 뜻보다는 단어의 색깔에 주의해야 한다는 것을 작업 기억에서 효율적으로 유지해야 한다. 이러한 연결이 없으면 수행에서는 문제가 일어난다.\n메타인지적 조절(Metacognitive regulation) 메타인지와 집행적 처리과정이 유사하다는 것은 갈등 해결, 에러 탐지, 정서 조절, 계획과 같은 집행적 처리과정의 연구들이 메타인지 연구와 어떤 관련성이 있는지를 통해 알 수 있다(Fernandez-Duque, Baird, and Posner, 2000). 예를 들면, 집행적 처리능력의 결핍으로는 낮은 계획능력, 감시 능력의 결핍, 그리고 기억 인출의 결핍이 있는데 이러한 결핍들은 메타인지적 조절과도 관련이 있다. 또한, 집행적 통제 과제들은 참가자들에게 갈등, 에러, 정서와 같은 노력이 필요한 인지적 처리과정을 요구한다. 이러한 인지적 처리과정에서 높은 메타인지적 능력을 가진 사람들은 문제 해결, 전략 선택, 의사 결정과 같은 복잡한 과제를 보다 잘 해결할 수 있다.\n1. 갈등 해결(Conflict resolution) 인지적 갈등과 관련하여 스트룹 과제를 대표적인 예시로 들 수 있다(Chen, Wei, \u0026amp; Zhou, 2006). 스트룹 과제에서 참가자들은 제시된 단어 색깔 이름을 말한다. 스트룹 과제는 불일치 조건인 단어 색깔과 단어 뜻이 불일치 하는 것과 단어 색깔과 단어 뜻이 일치하는 일치 조건 혹은 색상 뜻을 가지고 있지 않는 중립 조건으로 구성되어 있다. 스트룹 패러다임에서 참가자들은 단어 색깔과 단어 뜻이 불일치 하는 조건에서는 가장 큰 갈등을 느끼고, 일치하는 조건에서는 낮은 갈등을 경험한다. 스트룹 효과와 관련한 뇌영상 연구에서는 정중선 대상 활동(midline cingulated activation)이 불일치 조건에서 활성화하는 것을 보고한다. 일치하는 조건에서도 대상 피질의 활성이 보고되고 있다(Chen, Wei, \u0026amp; Zhou, 2006). 이러한 연구들은 집행적 주의 시스템은 일치 조건과 불일치 조건 모두에서 활성화를 보인다는 것을 드러낸다. 색상 단어 시행들은 일치 조건이든 불일치 조건이든 단어에 대한 정보와 색상에 대한 정보 간의 선택을 요구한다. 이러한 데이터들은 다차원 자극의 한 차원을 선택하는 것은 집행적 통제가 필요한 갈등을 나타낸다. 일치 조건과 불일치 조건에서 대상 피질의 활성화는 갈등 해결과 연관이 있다는 점을 시사한다. 일치 조건은 갈등이나 많은 에러와 관련은 없다. 일치 시행에서는 갈등에 대한 메타인지적 지식이 없고 단어 색과 단어 의미 간의 선택인 메타인지적 조절은 나타난다(Fernandez-Duque, Baird, and Posner, 2000).\n그러나 전측 대상 피질의 주요 역할은 갈등 해결보다는 갈등 감시에 있다는 주장이 있다(Carter, Botvinick, \u0026amp; Cohen, 1999). 전대상 피질은 갈등이나 에러를 탐지하고 다른 영역에서는 이러한 갈등을 해결한다는 것이다. 갈등 감시와 갈등 해결의 구분은 메타인지 연구의 인지적 감시와 인지적 통제로 이루어진 메타인지적 조절과 밀접하게 관련이 있다.\n2. 에러 탐지(Error detection) 피험자들이 과제를 수행할 때 에러를 저지르는 것은 흔한 일이다. 보통의 참가자들은 자신의 수행에 대해 외부 피드백이 없더라도 에러를 탐지하고 내적으로 평가한다. 에러 탐지 이후에 참가자들은 적정한 정확율을 유지하기 위해서 수행 속도를 늦춘다. 이러한 속도-정확도 균형(speed-accuracy trade-off)이 의식적 전략이라고 생각된다. 뇌 영상 연구에서는 에러 감시가 내측 전두엽에 위치한다고 주장한다. 속도 과제에서 event-related potentials(ERPs)는 중앙 전두에서 에러 관련한 음성(negativity)를 보였다. 에러 관련 음성이 일어나면 참가자들은 에러를 저지르고 있다는 것을 깨닫는다. 참가자들이 속도보다 정확도를 중시하면 에러 관련 음성 파형이 커진다. 이는 감시 시스템이 있다는 것을 드러낸다. 에러 관련 음성은 참가자의 내적 피드백과 외부 피드백으로 인해서 일어난다.\n반응에 대한 감시와 인식은 일관적이고 성공적인 행동을 위해 중요하다. 에러 탐지는 우리의 인지적 능력에 대해서 알려주고 스스로의 메타인지적 지식을 최신화할 수 있다. 즉 에러에 대해서 감시하고 탐지하면, 과제가 어렵다는 것을 알거나 스스로가 과제 수행을 잘못한다는 것을 아는 것이다. 따라서 스스로 이를 해결하기 위해서 인지적 전략을 짤 수 있도록 메타인지적 지식이 도와줄 수 있다.\n3. 정서 조절(Emotional regulation) 과제 수행을 할 때에는 인지적 정보와 정서적 정보 모두 전달된다. 예를 들어, 에러를 수행하였을 때, 이 에러 신호는 그들이 너무 빠르게 수행하고 있다는 것과 동시에 부정적인 정서를 전달한다. 슬픈 얼굴과 같은 정서적 단서가 있을 때 참가자들은 이 단서가 자신의 수행에 어떠한 정보를 제공하지 않는다는 것을 알고 있다고 해도 속도가 늦추고 에러율이 줄어든다.\n정서와 인지적 조절간 상호작용에 대한 증거로는 성격 특성이 반응 준거에 어떻게 영향을 주는지를 연구한 ERP연구이다. 참가자들이 높은 부적 정서를 가지고 있을 때 에러 이후에 더 속도를 늦추고 전측 대상에서 더 큰 에러 관련 음성(error-related negativity)를 보인다(Luu, Collins, \u0026amp; Tucker, 2000). 이러한 결과는 부적 정서가 인지적 처리과정과 상호작용을 한다는 것을 보여준다.\n정서적 조절과 메타인지간 관련은 품행 장애 아이들의 행동에서 드러난다. 공격적 아동들은 집행적 기능에 손상을 보이는 것뿐만 아니라 모호한 상황에서 다른 사람의 의도가 적대적이라고 잘못 귀인한다(Pennington \u0026amp; Ozonoff, 1996). 다른 사람의 의도를 잘못 평가하는 것은 메타인지적 지식이 부족하다는 것을 나타낸다. 더욱이 이러한 아동들은 정서적 조절 손상과 공감 그리고 조망 수용과 같은 다른 메타인지적 과제 수행의 어려움을 보인다. 이러한 인지적 그리고 정서적 조절이 중앙전두 영역의 활성화와 관련이 있다는 것은 같은 신경기제를 가진다는 것을 나타내는 증거일 수 있다.\n4. 계획(planning) 목표를 달성하기 위해서 어떠한 일련의 행동들이 필요할지에 대한 계획이 중요하다. 계획하기(planning)은 메타인지와 집행능력과 같은 고차 인지기능을 요구한다. 계획을 세우는 것에는 기말 고사를 준비와 같은 주요 목표와 각 챕터 읽기와 같은 세부 목표들로 이루어진다고 할 수 있다. 예를 들면, 세 살 먹은 아동들은 주요 목표는 알지 몰라도 실제로 수행하는데 어려움을 보인다. 이는 메타 지식과 그러한 지식의 활용인 메타인지적 통제간의 구분을 나타낸다고 볼 수 있다.\n5. 기억 조절(Memory regulation) 메타인지와 관련해서 초기 연구들은 메타기억에 초점을 두었다. 메타기억이란 기억 처리과정의 평가와 기억을 촉진하기 위한 기억 전략의 인식을 말한다. 기억을 인출하고 감시하는 것에 메타인지와 집행 기능은 중요한 역할을 한다. 어떠한 것에 대해서 질문을 던질 때 사람들은 몇몇의 대답들을 인출하고, 그 대답이 맞는지 틀린지에 대해서 감시(monitoring)한다. 즉 사람들은 그들이 기억하려는 것과 인출된 정보가 관련이 있는지 없는지 평가해야 한다. 관련 있는 기억과 관련 없는 기억을 구별하는 것은 집행적 기능을 요구하는 문제 해결, 계획에서 아주 중요하다(Fernandez-Duque et al., 2000). 기억 감시(memory monitoring)는 기억 과제에서 중요한데 이는 대답을 할 것인지 하지 않을 것인지를 결정하는데 필요하기 때문이다. 예를 들어서 학생은 정확하게 기억을 해서 답안지에 맞는 대답을 썼지만, 그 학생 스스로가 그 기억이 틀리다고(기억 감시) 생각해서 쓴 대답을 지울 수 있다. 또한, 인출된 기억 감시에 대한 실패는 작화증(confabulation), 거짓 재인(false recognition), 출처 기억 상실(source amnesia)로 이어질 수 있다. 또한, 노인들의 feeling-of-knowing(FOK)의 감소된 수행은 노화와 관련한 집행적 통제 능력의 감소와 연관이 있다는 연구가 있다(Isingrini, Perrotin \u0026amp; Souchay, 2008).\n메타 인지와 뇌 최근 연구들은 내측 전전두 피질(medial prefrontal cortex; mPFC) 그리고 문외측 전전두 피질(rostrolateral prefrontal cortex; RLPFC)와 같은 전전두 피질(PFC)의 활성이 메타인지적 능력과 관련되어 있다고 주장한다(Schmitz, Kawahara-Baccus, \u0026amp; Johnson, 2004; McCaig, Dixon, Keramatian, Liu, \u0026amp; Christoff, 2011). 이 중 내측 전전두 피질의 활성은 특성, 선호, 능력에 대한 자기 평가(self-evaluation), 현재 정서적 상태에 대한 자기 보고, 마음 이론 처리과정(theory of mind processes)과 관련되어 있다고 주장한다(Schmitz et al., 2004). 자기 자신에 대한 평가뿐만 아니라 타인에 대한 평가를 포함하는 메타인지적 평가(metacognitive evaluation; ME)동안에 내측 전전두 영역의 활성을 관찰할 수 있다. 그런데 이 때 자기 자신에 대한 평가일 때 내측 전전두 영역과 배외측 전전두 영역(dorsolateral prefrontal cortex;DLPFC)의 활성화가 관찰되었다. 또한 메타인지를 의식할 때에는 DLPF와 medial PFC의 활성화가 관련되어 있는데 메타인지적 조절에는 RLPFC의 활성이 관련되어 있다는 연구도 있다(McCaig et al., 2011).\n전두엽의 손상이 메타인지적 능력의 수행에 저하를 가지고 온다는 연구들이 있다(Metcalfe, \u0026amp; Shimamura, 1994; Shimamura, 2000; Schmitz et al., 2004). 전두엽 손상 환자들에게서 인지적 감시의 손상이 관찰되는 것이다. 또한, 이러한 집행적 처리의 손상은 메타 인지와 연관된 계획능력의 손상과 기억 인출 실패을 포함한다\n우선, 코르샤코프 증후군(Korsakoff syndrome)를 가진 환자들을 예로 들 수 있다. 코르샤코프 환자들은 과도한 알코올섭취로 인한 전두엽의 손상으로 기억상실증을 가지고 있다. 코르샤코프 환자들과 다른 기억상실증 환자들의 차이점은 feeling-of-knowing 현상에서 나타난다. 이 현상은 회상할 수는 없지만 아는 것 같다는 느낌을 말한다. 코르샤코프 환자들과 다른 기억상실증 환자들에게 feeling-of-knowing의 정확도를 측정하였을 때 코르샤코프 환자는 다른 기억상실증 환자보다 feeling-of-knowing 수행에서 뚜렷한 저하를 나타내었다(Metcalfe \u0026amp; Shimamura, 1994). 그러나 코르샤코프 증후군 환자는 다른 기억상실증 환자들과 마찬가지로 정답을 재인하는 능력은 같았다. 즉 이는 사실적 지식에 대해서는 손상이 없지만 이러한 지식을 평가하는 데에서 결함이 있다는 것, 메타인지적 평가 능력에 결함이 있다는 것을 보여준다. 또한, 알츠하이머 병(Alzheimer\u0026rsquo;s Disease; AD)을 앓고 있는 환자들은 그들이 회상할 수 있는 항목의 수를 과대 추정하였고 이는 스스로의 기억을 감시하는 메타인지적 기능에 문제를 보였다(Fernandez-Duque et al., 2000).\nREFERENCE Carter, C. S., Botvinick, M. M., \u0026amp; Cohen, J. D. (1999). The contribution of the anterior cingulate cortex to executive processes in cognition. Reviews in the Neurosciences, 10(1), 49-58.\nChen, Q., Wei, P., \u0026amp; Zhou, X. (2006). Distinct neural correlates for resolving stroop conflict at inhibited and noninhibited locations in inhibition of return.Journal of cognitive neuroscience, 18(11), 1937-1946.\nFernandez-Duque, D., Baird, J. A., \u0026amp; Posner, M. I. (2000). Executive attention and metacognitive regulation. Consciousness and cognition, 9(2), 288-307.\nFlavell, J. H. (1979). Metacognition and cognitive monitoring: A new area of cognitive–developmental inquiry. American psychologist, 34(10), 906.\nHanten, G., Levin, H. S., \u0026amp; Song, J. X. (1999). Working memory and metacognition in sentence comprehension by severely head-injured children: A preliminary study. Developmental Neuropsychology, 16(3), 393-414.\nIsingrini, M., Perrotin, A., \u0026amp; Souchay, C. (2008). Aging, metamemory regulation and executive functioning. Progress in brain research, 169, 377-392.\nJacobs, J. E., \u0026amp; Paris, S. G. (1987). Children\u0026rsquo;s metacognition about reading: Issues in definition, measurement, and instruction. Educational psychologist,22(3-4), 255-278.\nJonassen, D. H., Beissner, K., \u0026amp; Yacci, M. (2013). Structural knowledge: Techniques for representing, conveying, and acquiring structural knowledge. Routledge.\nKing, A. (1991). Effects of training in strategic questioning on children\u0026rsquo;s problem-solving performance. Journal of Educational Psychology, 83(3), 307.\nLuu, P., Collins, P., \u0026amp; Tucker, D. M. (2000). Mood, personality, and self-monitoring: negative affect and emotionality in relation to frontal lobe mechanisms of error monitoring. Journal of Experimental Psychology: General,129(1), 43.\nMcCaig, R. G., Dixon, M., Keramatian, K., Liu, I., \u0026amp; Christoff, K. (2011). Improved modulation of rostrolateral prefrontal cortex using real-time fMRI training and meta-cognitive awareness. Neuroimage, 55(3), 1298-1305.\nMetcalfe, J. (1990). Composite holographic associative recall model (CHARM) and blended memories in eyewitness testimony. Journal of Experimental Psychology: General, 119(2), 145.\nMetcalfe, J. E., \u0026amp; Shimamura, A. P. (1994). Metacognition: Knowing about knowing. The MIT Press.\nNelson, T. O. \u0026amp; Narens, L. (1990). Metamemory: A theoretical framework and new findings. In G. Bower (Ed.), ThePsychology of learning and motivation. MA: MIT press..\nPennington, B. F., \u0026amp; Ozonoff, S. (1996). Executive functions and developmental psychopathology. Journal of child psychology and psychiatry,37(1), 51-87.\nSchmitz, T. W., Kawahara-Baccus, T. N., \u0026amp; Johnson, S. C. (2004). Metacognitive evaluation, self-relevance, and the right prefrontal cortex.Neuroimage, 22(2), 941-947.\nSchraw, G. (1998). Promoting general metacognitive awareness. Instructional science, 26(1-2), 113-125.\nShimamura, A. P. (2000). Toward a cognitive neuroscience of metacognition.Consciousness and cognition, 9(2), 313-323.\n","permalink":"https://mhkim.dev/posts/5th-metacognition-and-brain/","summary":"\u003ch1 id=\"metacognition이란\"\u003eMetaCognition이란\u003c/h1\u003e\n\u003cp\u003e“Cogito ergo sum,” 이 말은 데카르트가 주장한 “나는 생각한다 고로 나는 존재한다” 라는 의미를 지닌 구절이다. 스스로의 생각과 행동에 대해서 숙고하는 능력은 인간을 다른 종과 구별할 수 있게 해주는 뚜렷한 특징 중 하나이다. 인간으로서 우리는 무엇을 지각하고 있는지를 알고, 무엇을 배우고, 그것을 위해 무엇이 필요한지 판단하고 미래 행동의 결과를 예측할 수 있다. 더욱이 상상과 현실을 구별하고 스스로의 반응을 평가하고 미래에 대한 계획을 세울 수 있다. 즉, 이러한 능력들이 바로 인간이 가진 상위 인지 능력들이다.\u003c/p\u003e","title":"메타인지와 집행기능 MetaCognition \u0026 Executive Function"},{"content":"2024년 2월 정신없이 흘러흘러 벌써 2월입니다. 듣거나 보거나 읽은 내용이 왕창 있는데 리뷰할 시간이 없어서 머리속 어딘가에 떠돌아다니는 기분이 듭니다.\n예전에 일요일 저녁은 늘 밤을 샜던 기억이 있습니다. 월요일이 주로 논문 발표여서, 계속 미루다가ㅋㅋㅋ 일요일 저녁부터 시작해서 새벽에 끝나고 월요일에\n랩 세미나를 가서 하루 종일 발표하고 질문 받고 답변하고, 기숙사 돌아가서 기절하는 날이라서. 이렇게 일요일 저녁에 몰아서 글을 쓰면 항상 그 때가 생각이 납니다.\n아무튼, Go 행사에 참석해서 이런저런 세미나를 들었는데 가장 기억에 남았던 부분이 서버 없이 배포하는 파트입니다.\n참석했던 go 행사의 핸즈온 세션 중에 서버 없이 배포하는 부분에 대해서 다시 한 번 정리할 겸 작성하겠습니다.\n여러 가지 배포 방법 중에 Serverless 배포 방법 배포 방법에는 여러 가지가 있습니다.\n로컬에서 작업해서 로컬 내에서만 확인하는 방법, 도커 이미지로 서버에 컨테이너 생성해서 배포하는 방법, 서버 내에서 직접 코드를 작성하는 방법 등이 있는데,\n이 3가지 다 해본적이 있는데, serverless 프레임워크를 사용해서 배포하는 건 처음 해봤습니다. AWS lambda 방식도 안 해보긴 했죠,\n1. Serverless Framework 란? Serverless 프레임워크는 AWS Lambda, Azure Functions, Google Cloud Functions 등과 같은 다양한 서버리스 플랫폼에 코드를 배포하는 데 사용되는 오픈 소스 도구입니다.\n이 프레임워크는 인프라를 코드(IaC) 방식으로 관리하여, 개발자가 인프라 설정에 드는 시간과 노력을 크게 줄여줍니다.\nserverless deploy 한 줄로 치켠 클라우드 환경에 배포됩니다. aws 뿐만 아니라. Azure 등에서도요.\ngoogle map 관련해서도 예제가 있었는데(https://github.com/serverless/examples/tree/v3/aws-golang-googlemap) 이 부분도 좀 더 파고 싶었습니다.\ngo, node.js, python, java, c#, Ruby, Swift, Kotlin, PHP, Scala 등을 지원합니다.\n요약하면, Code와 인프라를 한번에 배포하는 게 특징인 프레임워크입니다.\n2. Serverless + GO 를 사용하는 이유는 속도입니다.\n정적 컴파일 언어인 GO는 실행이 매우 빠릅니다. go 사용하시는 분이 장점으로는 속도를 꼽죠.\n에러를 컴파일 시점에서 발견할 수 있어서, 코드의 정확성을 유지하는데 도움이 되고, 운영 환경에서 사용하기에 적합하기 때문에\ngo와 serverless 를 사용하는 이유는 안전성과 속도라고 합니다.\n사용 방법 사전에 go \u0026amp; npm 을 설치해야 합니다. npm을 설치하는 방법은\ncurl -qL https://www.npmjs.com/install.sh | sh 를 치면 됩니다.\nserverless 를 npm을 통해 설치합니다\nnpm install -g serverless\n에러가 난다면\nsudo npm install -g serverless\n를 쳐서 권한을 sudo 권한으로 줍니다.\n이제 serverless 프로젝트를 생성하면 됩니다. 예시 코드를 받아서 생성하고, AWS 인증 정보를 입력했었습니다.\nserverless create -t aws-go-mod -p myservice\nserverless create: 이것은 Serverless 프레임워크의 \u0026lsquo;create\u0026rsquo; 명령을 호출합니다. 이 명령은 새로운 Serverless 서비스나 애플리케이션을 초기화하는 데 사용됩니다.\n-t aws-go-mod: 여기서 -t는 \u0026rsquo;template\u0026rsquo;의 약자로, 사용할 템플릿을 지정합니다. aws-go-mod는 AWS Lambda를 위한 Go 언어를 사용하는 프로젝트 템플릿을 의미합니다. aws-go-mod 템플릿은 Go 모듈을 사용하는 AWS Lambda 함수를 위해 사전 구성된 파일과 설정을 포함하고 있습니다.\n-p myservice: -p는 \u0026lsquo;path\u0026rsquo;의 약자로, 생성되는 서비스의 디렉토리 이름을 지정합니다. 이 경우, myservice라는 이름의 폴더가 생성되며, 그 안에 Serverless 프로젝트와 관련된 파일들이 위치하게 됩니다.\n요약하자면,\nserverless create -t aws-go-mod -p myservice 명령은\n\u0026lsquo;myservice\u0026rsquo;라는 이름으로 새 Serverless 서비스를 생성하고,\n이 서비스는 AWS Lambda에서 Go 언어를 사용하는 템플릿을 기반으로 설정됩니다.\n이 명령을 실행한 후에는 생성된 \u0026lsquo;myservice\u0026rsquo; 디렉토리로 이동하여 개발을 시작할 수 있습니다.\n그 다음 해당 폴더로 이동해줍니다.\ncd myservice make 추가로 aws-lamda-go 모듈을 다운로드 했습니다.\ngo mod download github.com/aws/aws-lambda-go go mod: 이것은 Go 언어의 모듈 관리 시스템을 사용하는 명령입니다. Go 1.11 버전 이후로 도입된 이 시스템은 Go 프로젝트의 의존성 관리를 단순화하고 표준화합니다.\ndownload: 이 부분은 go mod 시스템에게 특정 모듈을 다운로드하라는 지시를 합니다. 이 명령은 지정된 모듈의 소스 코드를 로컬 시스템에 다운로드하며, 의존성 트리에 있는 다른 필요한 모듈들도 함께 다운로드합니다.\ngithub.com/aws/aws-lambda-go: 이것은 다운로드할 모듈의 경로입니다. github.com/aws/aws-lambda-go는 AWS Lambda를 위한 Go 언어 라이브러리이며, AWS Lambda에서 Go 언어로 작성된 함수를 개발할 때 필요한 여러 도구와 유틸리티를 제공합니다.\n이 명령을 실행하면, Go의 모듈 시스템은 aws-lambda-go 라이브러리를 로컬 시스템에 다운로드하고, 프로젝트의 go.mod 파일에 이 의존성을 기록합니다. 이렇게 함으로써 Go 프로젝트가 AWS Lambda 환경에서 필요로 하는 기능들을 사용할 수 있게 됩니다.\nAWS Lambda를 위한 Go 언어 라이브러리는 AWS에서 Lambda 함수를 쉽게 작성하고 배포할 수 있도록 도와주는 다양한 기능들을 포함하고 있어, AWS Lambda 환경에서 Go 언어를 사용하는 개발자에게 매우 유용합니다\n배포\nmake sls deply 참고로 중간에 AWS credential 인증도 해야 합니다. aws 설정에 들어가서 확인할 수 있습니다.\n다음의 에러가 난다면 해당 사이트로 들어가세요\n[~][myservice][%][24-02-04][19:07] serverless deploy Deploying myservice to stage dev (us-east-1) ✖ Stack myservice-dev failed to deploy (2s) Environment: darwin, node 18.16.0, framework 3.38.0, plugin 7.2.0, SDK 4.5.1 Docs: docs.serverless.com Support: forum.serverless.com Bugs: github.com/serverless/serverless/issues Error: AWS provider credentials not found. Learn how to set up AWS provider credentials in our docs here: \u0026lt;http://slss.io/aws-creds-setup\u0026gt;. 특정 함수만 빠르게 배포하고 싶다면\nmake sls deploy function --function 함수 이름 호출\n# Endpoint 호출 curl -XGET $endpoint curl -XPOST $endpoint -H \u0026quot;Content-Type: text/plain\u0026quot; -d '$입력할 내용' 참고로 테스트한 go 파일은 하단 serverless 배포를 발표해주신 발표자 분의 깃허브 링크에 있습니다. https://github.com/da-head0/aws-go-handson/blob/main/hello/main.go\n마무리 Deep Learning 이나 Machine Learning을 쓰려고 했는데 go 언어 AWS 배포하는 걸 쓰게 됩니다\u0026hellip;\nDeep Learning 은\u0026hellip; 뭔가 좀 막히는 부분이 있는데, 좀 막힌다 싶으면 좀 더 새로운 언어 등을 배우면서 환기를 하는 편입니다. (이열치열!)\n그리고 go 언어와 서버리스 배포는 잘 쓰면 꽤 유용할 듯하여서 작성해보았습니다.\n다음 주는 곧 설날 연휴입니다. 연휴에 연차 붙여서 쉬면서 또 이것 저것 할 것 같은 느낌적인 느낌이 듭니다.\n새해 복 많이받으세🐉!\n","permalink":"https://mhkim.dev/posts/4th-posting_serverless_go/","summary":"\u003ch1 id=\"2024년-2월\"\u003e2024년 2월\u003c/h1\u003e\n\u003cp\u003e정신없이 흘러흘러 벌써 2월입니다. 듣거나 보거나 읽은 내용이 왕창 있는데 리뷰할 시간이 없어서 머리속 어딘가에 떠돌아다니는 기분이 듭니다.\u003c/p\u003e\n\u003cp\u003e예전에 일요일 저녁은 늘 밤을 샜던 기억이 있습니다. 월요일이 주로 논문 발표여서, 계속 미루다가ㅋㅋㅋ 일요일 저녁부터 시작해서 새벽에 끝나고 월요일에\u003c/p\u003e\n\u003cp\u003e랩 세미나를 가서 하루 종일 발표하고 질문 받고 답변하고, 기숙사 돌아가서 기절하는 날이라서. 이렇게 일요일 저녁에 몰아서 글을 쓰면 항상 그 때가 생각이 납니다.\u003c/p\u003e\n\u003cp\u003e아무튼, Go 행사에 참석해서 이런저런 세미나를 들었는데 가장 기억에 남았던 부분이 서버 없이 배포하는 파트입니다.\u003c/p\u003e","title":"AWS+GO+Serverless 배포"},{"content":"2024년 1월 근황 로보틱스 관련해서 예전부터 관심이 있어서 약간의 발을 걸쳐두고 있었습니다.\nLLM과 관련해서 발표도 해보고 계속 스터디도 하고 있습니다.\n20-30년 정도 투자해서 로봇 연구를 키우는 건\n현재 AI 발전 흐름과 관련해서 필요한 일이 아닐까 합니다\n사람은 나이가 들고\n아프기도 하고\n사소한 거에 취약해지고\n회복하려면 시간이 걸리기도 하는데\n로봇은 그렇지 않으니까요.\n회사 생활하면서 틈틈이 스터디에 참여하려니\n가끔 힘들다는 생각이 들기도 하는데\n장기적으로 봤을 때는 필요한 일이라고 생각합니다.\n그리고 이번 주에는 뭔가 모르게 일이 있었는데\n어려운 문제라 하필 잘 풀리지 않아서 회사 일을 나름 풀어내려고 고심하고,\n동시에 로봇틱스 관련해서 발표 준비하느라 바빴던 시간들이었습니다.\n아무튼,\n오늘은 LLM Models 히스토리에 대해서 한 번 글을 쓰려고 합니다.\nLLM Models 의 히스토리 다음의 그림과 같이 발전했습니다. (markdown에 이미지 첨부하는 방법이 뭐더라.. 제대로 올라갔는지 확인 필요\u0026hellip;)\n특징 1. Transformer 모델 그리고 Decoder-Only 모델의 대세 그림에서 보면 Decoder-only 모델에서 훨씬 더 많은 가지들이 뻗어나온 걸 볼 수 있습니다.\n2017년 하반기 쯤에 Attention is All you Need 라는 논문이 구글에서 나왔죠.\n해당 논문에서는 Transformer 모델을 설명하고,\n중요한 단어에 초점을 둘 수 있는 Attention 레이어에 대해서 설명하면서\nNLP 연구의 한 획을 그었습니다.\n그리고 저 Transformer 모델이 완전히 판도를 바꿉니다. chatGPT도 트랜스포머 모델 기반이니까요.\n구글은 해당 논문을 소개하면서 BART라는 모델을 만듭니다. 해당 모델은 Encoder-Decoder 를 함께 쓴 모델입니다.\n반대로 오픈AI는 트랜스포머 모델에서 Decoder-only 구조만 사용했죠. Auto-Regressive 라고 하죠.\n뒤에 뭐가 나올지를 예측하는 모형입니다. Q\u0026amp;A와 같은 데이터를 학습해서 질문을 하면 뒤에 무엇을\n무슨 단어를 내보낼지를 예측하는 모델입니다.\n초기에는 Encoder-Only, Decoder-Only 보다는 Encoder-Decoder를 함께 쓰는 형태로 발전했습니다.\n그런데 ChatGPT-3이 나오면서 decoder-only 가 더 핫해졌죠. 그 때 메타든 구글이든 저쪽으로 가야겠구나 해서\nLLaMA, Bard 모델이 속속 제시되기 시작합니다.\nEncoder-Only 모델은 사실 잘 없고,\nEncoder-Decoder는 있긴 한데 대중에게는 알려져 있지 않고,\nDecoder-Only는 대중에게 정말 많이 알려져 있습니다. LLaMA, Bard, ChatGPT3.5, 4.0 등이요.\n특징 2. Open-Source vs Closed-Source AI, AI, AI 시대라고 해도, 사실 chatGPT가 선보이기 전까지는\n이게 무슨 효과가 있을까. 과연 잘 되긴 할까 라는 의구심이 있었습니다.\n텍스트 분류도, 텍스트 생성도 사실 그닥이었으니까요.\n투자하는 비용은 많은데, 성과가 잘 보이지는 않았죠.\n그래서 chatGPT3이 등장하기 전까지는\n해당 데이터를 학습시켜서 모델로 만들면 기업들이 오픈 소스로 많이 풀어주었습니다.\n생성하는 능력이나,\n하이퍼파라미터 갯수가 적었지만\n그래도 오픈 소스로 볼 수 있었는데,\nGPT-3이 등장하면서 모든 기업에서 Closed-Source 로 변했습니다.\n단, 메타는 제외입니다. Meta는 만든 모델을 모두 공개했습니다. LLaMA가 대표적이죠.\n그래서 LLM 연구를 할 때 라마가 많이 언급되는 게,\n소스에 접근해서 알맞은 형태로 fine-tuning을 할 수 있다는 점 때문입니다.\n특징 3. 트랜스포머 모델 등장 전의 모델들 그럼 저기 2018년 이전의 모델을 한 번 살펴보죠. 정확하게는 트랜스포머 모델을 선보인 2017년 후반의 Attention is All you Need 논문이 나오기 전이요.\n대표적으로 볼 수 있는 건,\nWord2Vec (2013):\n개발자: Google Word2Vec은 단어를 벡터 공간에 매핑하는 것으로, 비슷한 의미를 가진 단어들이 벡터 공간에서 서로 가까이 위치하게 됩니다. 두 가지 주요 아키텍처: Continuous Bag of Words (CBOW)와 Skip-Gram. CBOW는 주변 단어들로부터 한 단어를 예측하고, Skip-Gram은 한 단어로부터 주변 단어들을 예측합니다. 장점: 효율적인 학습, 단어 간의 유사성 캡처. 단점: 단어의 의미가 문맥에 따라 달라지는 것을 모델링하지 못함 (즉, 동음이의어 처리 어려움). FastText (2016):\n개발자: Facebook Research Word2Vec과 유사하지만, 단어를 더 작은 단위인 n-gram으로 나누어 이들의 벡터를 합하여 최종 단어 벡터를 얻습니다. 장점: 미등록 단어(Out-Of-Vocabulary, OOV)와 단어의 형태적 변화를 더 잘 처리할 수 있음. FastText는 단어의 내부 구조를 이해하는데 강점을 보여, 특히 언어의 형태학적 특성이 중요한 언어에 유용합니다. ELMo (Embeddings from Language Models, 2018):\n개발자: Allen Institute for AI ELMo는 문맥을 고려한 단어 임베딩을 생성하는 언어 모델입니다. 이는 LSTM 기반의 양방향 언어 모델을 사용하여 단어의 벡터 표현을 생성합니다. 장점: 문맥에 따라 단어의 의미가 바뀔 때 그 차이를 잘 잡아내서 단어의 벡터를 생성합니다. 동음이의어와 같은 단어들도 문맥에 따라 다른 벡터 표현을 가질 수 있습니다. 이렇게 있습니다.\nCBoW, Word2Vec, LSTM, RNN 등을 기반으로 만든 모델이죠. 초기 연구 모형이고,\n사실 문제는 있었죠. 대량의 데이터를 학습하면 backpropagation에서 정보가 거의 남지 않아서 후반의 문장만\n메모리에 남는다던가 등\u0026hellip;\n특징 4. Transformer 이후의 Encoder-Only 소개 트랜스포머 모델이 소개가 된 다음 나온 것 중에 Bert, Electra 등의 모델이 있습니다.\nBert는 특히 유명합니다. 양방향 문맥을 이해할 수 있는 인코더 형태를 가지고 있어서 입력 데이터에서 유용한 정보를 추출했죠. 좀 더 자세히 설명하면,\nTransformer 모델은 기본적으로 encoder와 decoder 두 부분으로 구성되어 있습니다.\n이중 encoder 부분만을 사용하는 경우를 \u0026ldquo;encoder only\u0026rdquo; 모델이라고 부릅니다.\n이 모델은 입력 데이터로부터 복잡한 패턴이나 특징을 추출하고, 이를 고차원적인 표현으로 변환하는 역할을 수행합니다.\nBERT (Bidirectional Encoder Representations from Transformers, 2018):\n개발자: Google BERT는 양방향 Transformer 인코더를 사용하여 문맥을 기반으로 단어의 임베딩을 생성합니다. BERT는 \u0026lsquo;Masked Language Model\u0026rsquo; (MLM) 과 \u0026lsquo;Next Sentence Prediction\u0026rsquo; (NSP)이라는 두 가지 작업을 통해 사전 학습됩니다. 장점: 문맥 기반의 단어 임베딩으로 우수한 성능을 보이며, 다양한 NLP 작업에 대해 미세 조정을 통해 적용할 수 있습니다. BERT는 다양한 자연어 처리 작업에서 새로운 기준을 설정했습니다. ALBERT (A Lite BERT):\n개발자: Google Research ALBERT는 BERT 모델의 경량화 버전으로 설계되었습니다. BERT와 유사한 구조를 가지고 있지만, 파라미터를 공유하고, 팩터화된 임베딩 파라미터를 사용하여 모델의 크기를 줄이고 학습 속도를 향상시켰습니다. 장점: BERT에 비해 훨씬 적은 메모리를 사용하면서도 성능을 유지하거나 개선합니다. RoBERTa (Robustly Optimized BERT Approach):\n개발자: Facebook AI RoBERTa는 BERT의 변형으로, 학습 데이터를 더 많이 사용하고, 학습 과정을 재조정하여 BERT보다 성능을 향상시킨 모델입니다. 장점: 더 큰 배치 사이즈와 더 긴 학습 시간, 더 많은 데이터를 사용하여 BERT의 성능을 능가합니다. BERT (Bidirectional Encoder Representations from Transformers):\n개발자: Google 앞서 언급했듯이, BERT는 양방향 Transformer 인코더를 사용하여 문맥 기반의 단어 임베딩을 생성합니다. Masked Language Model (MLM)과 Next Sentence Prediction (NSP)을 통해 사전 학습됩니다. ELECTRA (Efficiently Learning an Encoder that Classifies Token Replacements Accurately):\n개발자: Google Research와 Stanford University ELECTRA는 BERT와 유사하지만, 다른 사전 학습 방식을 사용합니다. ELECTRA는 \u0026lsquo;Replaced Token Detection\u0026rsquo; 작업을 사용하여, 실제 데이터와 생성된 데이터를 구분하는 방식으로 학습합니다. 장점: 더 적은 계산 자원으로 BERT와 비슷하거나 더 나은 성능을 달성합니다. 주요 사용은 텍스트 분류, 문장 표현 등에 사용합니다.\n특징 5. Transformer 등장 이후 Encoder-Decoder 모델 소개 두 가지의 구조를 다 쓰는 모형으로 양방향 및 자기 회귀 트랜스포머 모델인 바트가 있습니다. 상당히 우수한 능력을 보여주었죠. 상용화 까진 되지 않았지만,\n학습할 때 mask 된 문장에서 단어를 복원하는 걸 학습하다보니\u0026hellip; 문맥 이해는 바트가 상당히 뛰어났습니다.\n예를 들어, 안녕하세요. 오늘 ___ 참 좋네요. 그렇죠? 라고 중간에 비워두고 무슨 단어가 들어가는지 맞추는 과정을 추론하도록 하는 거입니다.\nBART (Bidirectional and Auto-Regressive Transformers):\n개발자: Facebook AI BART는 텍스트 생성 및 이해 작업을 위한 시퀀스-투-시퀀스 모델입니다. Transformer 구조를 기반으로 하며, 인코더는 양방향으로, 디코더는 자기 회귀적(auto-regressive)으로 작동합니다. BART는 특히 텍스트 요약, 기계 번역, 질문에 대한 답변 생성과 같은 작업에서 우수한 성능을 보입니다. 주요 특징은 노이즈가 주입된 문장을 원래의 문장으로 복원하는 사전 학습 과정을 통해, 다양한 형태의 텍스트 변환을 이해하고 처리할 수 있다는 것입니다. T5 (Text-to-Text Transfer Transformer):\n개발자: Google Research T5는 모든 NLP 작업을 텍스트-투-텍스트 문제로 변환하여 접근하는 방식을 취합니다. 즉, 입력과 출력 모두 텍스트 형식을 취하며, 이를 통해 다양한 작업을 하나의 일관된 프레임워크 내에서 처리할 수 있습니다. T5는 사전 학습과 미세 조정 단계를 모두 포함하며, 특히 미세 조정 단계에서 다양한 NLP 작업에 대해 우수한 성능을 보입니다. T5는 BERT나 GPT와 같은 기존 모델들보다 더 큰 사전 학습 데이터셋과 더 광범위한 벤치마크 작업들을 사용하여 학습되었습니다. GLM (Guided Language Model):\nGLM은 특정한 작업을 수행하기 위해 추가적인 정보나 지침을 제공받는 언어 모델입니다. GLM은 일반적으로 특정 작업에 대한 지침이나 예시를 통해 작업을 수행하는 방법을 학습합니다. GLM의 구체적인 내용과 성능은 구현과 사용되는 데이터셋에 따라 다를 수 있습니다. 따라서 GLM이라는 용어는 다양한 맥락에서 사용될 수 있으며, 이는 문맥에 따라 특정한 방식으로 구성되고 학습된 언어 모델을 지칭할 수 있습니다. 특징 6. Transformer 등장 이후 Decoder 모델 소개 대망의 디코더 Only 모델. 자기 회귀 언어 모델이라서, 이전 단어를 바탕으로 뒤에 무슨 단어가 나올지를 예측하는 겁니다.\n매개 변수도 점점 더 늘어나고 있죠. GPT1, gpt2, gpt3 은 각각 2B, 15B, 175B 개로\n훈련 시키는 비용도 17억, 59억 등으로 늘어나면서\n매개 변수와 비용이 모두 증가하는 모델입니다.\n투자자들 사이에서는 회수 시점을 정하기 어렵다고 합니다.\n아직까지는 투자하는 만큼 더 뛰어난 성능이 나오기 때문에 끝없이 돈이 들어갑니다. 구글, OpenAI 도 몇 조 씩 투자해서 만들고 있죠.\nGPT-1 (Generative Pre-trained Transformer 1):\n개발자: OpenAI GPT-1은 Transformer 모델을 기반으로 한 언어 생성 모델입니다. Unsupervised pre-training과 supervised fine-tuning을 결합하여 다양한 NLP 작업에 적용됩니다. GPT-1은 문맥을 기반으로 텍스트를 생성하는 능력을 보여주며, 다양한 작업에서 탄탄한 성능을 제공합니다. GPT-2:\n개발자: OpenAI GPT-2는 GPT-1의 후속 모델로, 모델 크기, 데이터셋, 그리고 학습 방법 면에서 확장되었습니다. 특히, 훨씬 더 큰 데이터셋으로 학습되었고, 모델 크기도 증가했습니다. GPT-2는 더 정교한 텍스트 생성 능력을 보여주며, 문맥 이해와 자연스러운 언어 생성에서 뛰어난 성능을 보입니다. GPT-3:\n개발자: OpenAI GPT-3는 GPT 시리즈 중 가장 큰 모델로, 매우 큰 언어 모델입니다. 이는 1750억 개의 파라미터를 가지고 있으며, 이로 인해 높은 수준의 언어 이해와 생성 능력을 보여줍니다. GPT-3는 광범위한 NLP 작업에 zero-shot, few-shot, 또는 fine-tuning 방식으로 적용할 수 있으며, 사전 학습만으로도 상당한 성능을 나타냅니다. LLaMA (Linguistically-informed Language Model Adaptation):\nLLaMA는 특정 언어적 정보나 작업에 적응할 수 있는 언어 모델입니다. 이 모델은 특정 언어 구조나 패턴을 이해하고 반영할 수 있도록 설계되어 있으며, 이를 통해 더 정교하고 효율적인 언어 처리가 가능합니다. LLaMA는 특정 언어적 특성이나 작업에 맞게 모델을 미세 조정하는데 사용될 수 있으며, 이를 통해 모델의 성능을 향상시킬 수 있습니다. Bard:\nBard는 언어 모델 또는 NLP 시스템의 이름으로 사용될 수 있지만, 이 문맥에서 특정한 모델이나 시스템을 가리키는 것은 아닙니다. 일반적으로, Bard는 이야기나 시를 만들어내는 시스템 또는 그러한 능력을 가진 언어 모델을 의미할 수 있습니다. 특정한 Bard 모델이나 시스템이 있다면, 자연어 생성, 이야기 구성, 시적 표현 생성 등의 능력을 가진 모델일 수 있습니다. 마무리 최근 기사에서 chatGPT 5가 나온다고 합니다.\n샘 알트먼에 따르면 훨씬 더 좋은 성능이라고 합니다.\nchatGPT4가 나쁜 성능이다 라고 말하는 걸 보면 얼마나 성능이 개선이 되었는지 감이 오지 않습니다.\n오늘은 여기까지 쓰겠습니다.\n추가로 LLaMA와 관련해서 발전된 모델 등도 써보고 싶은데, 너무 많네요.\n그리고\u0026hellip; 아직 markdown 파일 쓰는 것에 익숙치 않으니 뭔가 불편함ㅋㅋ\n그럼 20000!\n","permalink":"https://mhkim.dev/posts/3rd-posting_llmmodels/","summary":"\u003ch1 id=\"2024년-1월-근황\"\u003e2024년 1월 근황\u003c/h1\u003e\n\u003cp\u003e로보틱스 관련해서 예전부터 관심이 있어서 약간의 발을 걸쳐두고 있었습니다.\u003c/p\u003e\n\u003cp\u003eLLM과 관련해서 발표도 해보고 계속 스터디도 하고 있습니다.\u003c/p\u003e\n\u003cp\u003e20-30년 정도 투자해서 로봇 연구를 키우는 건\u003c/p\u003e\n\u003cp\u003e현재 AI 발전 흐름과 관련해서 필요한 일이 아닐까 합니다\u003c/p\u003e\n\u003cp\u003e사람은 나이가 들고\u003c/p\u003e\n\u003cp\u003e아프기도 하고\u003c/p\u003e\n\u003cp\u003e사소한 거에 취약해지고\u003c/p\u003e\n\u003cp\u003e회복하려면 시간이 걸리기도 하는데\u003c/p\u003e\n\u003cp\u003e로봇은 그렇지 않으니까요.\u003c/p\u003e\n\u003cp\u003e회사 생활하면서 틈틈이 스터디에 참여하려니\u003c/p\u003e\n\u003cp\u003e가끔 힘들다는 생각이 들기도 하는데\u003c/p\u003e\n\u003cp\u003e장기적으로 봤을 때는 필요한 일이라고 생각합니다.\u003c/p\u003e\n\u003cp\u003e그리고 이번 주에는 뭔가 모르게 일이 있었는데\u003c/p\u003e","title":"LLM Models"},{"content":"Intro Neural Network 를 sklearn이나 pytorch, tensorflow 등 라이브러리 활용해서 짜는 것도 있지만 직접 A부터 Z까지 짜는 과정에 대해서 기록합니다.\n요즘에는 Andrew Ng 교수님 Deep Learning 과정을 듣고 있습니다. 퀴즈나 과제 풀고 제출해야 하는 과정인데 주말마다 듣고 있습니다. 인상깊었던 부분은 tensorflow를 구글에서 만드셔서 그런지 과제도 전부 직접 만드는 걸 내주십니다. 예전에 python을 몰랐던 때 이것저것 해보다가\u0026hellip; 과제 푼 것 중에 python의 기본 내장 set 클래스를 직접 구현해보라고 했던 과제가 있었는데, 그 과제 풀었을 때가 생각나기도 합니다.\n데이터는 따로 없지만, sudo 코드로 어떻게 분류 과제를 neural network로 구현하는지 기록하겠습니다.\n1. 라이브러리 및 Dataset Dataset을 불러옵니다. 라이브러리는 간단하게 numpy 정도?\nimport numpy as np import copy X, Y = load_dataset() # 해당되는 데이터셋트 불러오기 그리고 형태를 확인\nX.shape Y.shape 2. Neural Network Model 시작 다음을 구현할 예정입니다 $x^{(i)}$: $$z^{[1] (i)} = W^{[1]} x^{(i)} + b^{[1]}\\tag{1}$$ $$a^{[1] (i)} = \\tanh(z^{[1] (i)})\\tag{2}$$ $$z^{[2] (i)} = W^{[2]} a^{[1] (i)} + b^{[2]}\\tag{3}$$ $$\\hat{y}^{(i)} = a^{[2] (i)} = \\sigma(z^{ [2] (i)})\\tag{4}$$ $$y^{(i)}_{prediction} = \\begin{cases} 1 \u0026amp; \\mbox{if } a^{[2](i)} \u0026gt; 0.5 \\\\ 0 \u0026amp; \\mbox{otherwise } \\end{cases}\\tag{5}$$ hidden 레이어에는 하이퍼볼릭탄젠트 활성화 함수를 사용하고 출력 레이어에는 시그모이드 활성화 함수를 활용해서 1과 0이 출력되는데, 그 과정의 수식은 다음과 같습니다.\n3. layer 구조 정하기 def 레이어구조정하기(X, Y): return (입력레이어, 숨겨진레이어, 출력레이어) 입력값 X 가 만약 (2, 4000) 이면 입력 레이어 갯수는 2, 출력값 Y 가 만약 (1, 4000)이면 출력 레이어 갯수는 1 로 입력될 수 있도록 구조를 짭니다. 숨겨진 레이어 사이즈 같은 경우는 연구자 마음대로. 예를 들어 숨겨진 레이어의 갯수를 4로 하겠습니다.\n4. parameter 초기화하기 def 초기화값(입력, 히든, 출력): # W는 weight 값을 말합니다. W1 = 랜덤값인데 (히든, 입력) * 0.001 로 초기화를 해줍니다. (4, 2) # b는 bias 값입니다. 0으로 해주는데 레이어 사이즈에 맞춰서 0으로 초기화 b1 = np.zeros((히든, 1)) 으로 하면 사이즈가 맞죠. 여기서는 (4, 1) W2 = (출력, 히든) * 0.001 b2 = np.zeros((출력, 1)) return 값은 딕셔너리 구조를 활용해서 해당 값을 리턴합니다 5. forward propagation 탄젠트 함수와 시그모이드 함수를 구현해서 출력값과 히든값들에 대해서 중간에 계산해주는 과정입니다. 데이터와 앞서서 초기화된 파라미터값을 집어넣습니다.\n시그모이드 함수는 = 1 / ( 1 + np.exp(-x) ) 를 참고하여 구현합니다. 구글 검색하면 나옵니다. 그림을 집어넣기엔 시간이 촉박해서ㅋㅋㅋㅠㅠㅠ\n$$Z^{[1]} = W^{[1]} X + b^{[1]}\\tag{1}$$ $$A^{[1]} = \\tanh(Z^{[1]})\\tag{2}$$ $$Z^{[2]} = W^{[2]} A^{[1]} + b^{[2]}\\tag{3}$$ $$\\hat{Y} = A^{[2]} = \\sigma(Z^{[2]})\\tag{4}$$ 파이썬으로 구현하면\ndef 정전파(X, parameters): # parameters는 이전에 딕셔너리 형태로 w1, b1, w2, b2값을 초기화했으니 해당 값을 받으면 됩니다. w1, b1, w2, b2 = parameter[\u0026quot;W1\u0026quot;], parameter[\u0026quot;b1\u0026quot;],,, 등등 # 이제 np.dot(w, X) + b 가 된 z값과 히든 레이어에서 탄젠트 활성화함수를 거친 a1, 그리고 마지막 출력 레이어의 시그모이드 활성화 함수를 통과한 a2값을 구하기 Z1, A1, Z2, A2의 값을 구합니다 Z1 = np.dot(W1, X) + b1 A1 = np.tanh(Z1) Z2 = np.dot(W2, A1) + b2 A2 = sigmoid(Z2) 값으로 이것도 역시 딕셔너리 형태로 return 해주면 되겠네요 6. Cost 구하기 cost 값은 어느 정도 될 것인지 구합니다\n$$J = - \\frac{1}{m} \\sum\\limits_{i = 1}^{m} \\large{(} \\small y^{(i)}\\log\\left(a^{[2] (i)}\\right) + (1-y^{(i)})\\log\\left(1- a^{[2] (i)}\\right) \\large{)} \\small\\tag{13}$$ def 비용계산(A2, Y): # 앞에서 마지막 출력레이어에서 시그모이드 함수를 거친 값인 A2와 실제 라벨링된 데이터 Y를 계산합니다 m = 데이터 갯수 logprobs = np.multiply(np.log(A2), Y) + np.multiply(np.log(1-A2), (1-Y)) cost = -np.sum(logprobs) * 1/m return cost 7. 역전파 값 구하기 역전파는 각 단계에서 편미분한 값을 구합니다. gradient descent라고도 하죠. 어느 방향으로 learning rate 를 정해서 조금씩 조금씩 cost가 줄어드는 방향으로 가기 위해서 역전파 값을 구해야 합니다.\ndef 역전파(초기화된 parameters, 이전에 구한 값, X, Y): 초기화된 파라미터 W1, W2 활성화 값 A1, A2 을 활용해서 각 단계별 편미분된 값을 구합니다. dz2, dw2, db2, dz1, dW1, db1 등입니다. dZ2 = A2-Y dW2 = np.dot(dZ2, A1.T) * 1/m db2 = 1/m * np.sum(dZ2, axis=1, keepdims=True) dZ1 = np.dot(W2.T, dZ2) * (1-np.power(A1, 2)) dW1 = 1/m * np.dot(dZ1, X.T) db1 = 1/m * np.sum(dZ1, axis=1, keepdims=True) 예를 들어 이렇게 구할 수 있습니다. 그리고 dW1, db1, dW2, db2 값은 이후에 parameter 업데이트 할 때 필요하니 마찬가지로 딕셔너리 형태로 return 해주기 8. parameter 업데이트 파라미터 값을 업데이트 합니다 W1, b1, W2, b2 값은 learning_rate 를 하드 코드 값으로 받아서 업데이트할 수 있습니다. 앞에서 편미분된 dW1, db1, dW2, db2 값 등을 받아서 업데이트합니다. W1 -= learning_rate * dW1 b1 -= learning_rate * db1 W2 b2 마찬가지로 return {\u0026quot;W1\u0026quot; : W1, ... } 딕셔너리 형태로 반환을 받고 9. 최종 모델 만들기 최종 모델을 만듭니다. def nn_model(X, Y, 히든, 반복횟수, cost값 출력): 레이어 x, y 사이즈 정하기 파라미터 = 초기화된 파라미터 값 부르기 for i in range 반복횟수: a2, 파라미터 = forward propagation 함수 호출해서 마지막 시그모이드 출력 레이어 통과한 값 과 W1, b1 등의 값 불러오기 A2, cache = forward_propagation(X, parameters) cost 구하기 Y와 해당 출력 값 비교한 뒤 비용 계산 cost = compute_cost(A2, Y) 역전파 값 구해서 gradient descent 값 받기 grads = backward_propagation(parameters, cache, X, Y) learning rate 값 넣어서 해당 파라미터 값 업데이트 하기 parameters = update_parameters(parameters, grads) 로 10000 번 정도 반복 시켜서 돌려주고 최종 업데이트된 parameters 값을 반환받습니다.\n10. 예측하기 이제 해당 모델에서 예측합니다. 시그모이드 함수를 통과한 값이 0.5 이상이면 1, 0으로 찍어주면 예측값이 나오도록\ndef predict 함수를 짭니다. return 값은 numpy 값이 나오도록... 예를 들어 np.where(A2 \u0026gt; 0.5, 1, 0) 11. 마무리 sudo 코드 로 짠 Neural Network 코드로 분류 과제하기 였습니다.\n모든 수학적 수식을 코드로 구현한 뒤에 굴리는 과정인데, 직접 해보면 재밌습니다.\n","permalink":"https://mhkim.dev/posts/writing_nn_classification/","summary":"\u003ch1 id=\"intro\"\u003eIntro\u003c/h1\u003e\n\u003cp\u003eNeural Network 를 sklearn이나 pytorch, tensorflow 등 라이브러리 활용해서 짜는 것도 있지만 직접 A부터 Z까지 짜는 과정에 대해서 기록합니다.\u003c/p\u003e\n\u003cp\u003e요즘에는 Andrew Ng 교수님 Deep Learning 과정을 듣고 있습니다.\n퀴즈나 과제 풀고 제출해야 하는 과정인데 주말마다 듣고 있습니다.\n인상깊었던 부분은 tensorflow를 구글에서 만드셔서 그런지 과제도 전부 직접 만드는 걸 내주십니다.\n예전에 python을 몰랐던 때 이것저것 해보다가\u0026hellip; 과제 푼 것 중에 python의 기본 내장 set 클래스를 직접 구현해보라고 했던 과제가 있었는데, 그 과제 풀었을 때가 생각나기도 합니다.\u003c/p\u003e","title":"일반신경망_분류"},{"content":"Step 0. 글쓰는 개발자 모임 9기를 시작하면서\u0026hellip; 글또는 작년쯤에 알게 되었습니다.\n에러 등을 검색할 때 종종 올라왔던 글이 글또 분들이 쓰셨던 글이 있었고,\n꾸준히 글을 쓴다는 이야기를 들어서 가입하게 되었습니다.\n혼자 쓰는 것도 좋지만 같이 쓰면 더 좋을 것 같아서 올해 초 8기에 신청을 해서 8기 활동을 했습니다.\n초반에는 거의 못했고 후반에 좀 더 많은 활동을 했었던 걸로 기억합니다. (커피챗, 데이터반상회 준비위. 생전 처음해보는 굿즈 만들기 등\u0026hellip;)\n8기가 끝난 뒤에, 좀 더 이런 저런 걸 해보면 좋을 것 같아서 9기도 신청했습니다.\n글또 모임을 만든 변성윤 님께서 10기까지만 한다고 하시니,\n8기부터 9기 10기 까지 쭉 해봐도 좋을 것 같단 생각도 했습니다.\nStep 1. 사실 함께 성장하는 게 뭘까\u0026hellip; 조직 생활을 하면서 느끼는 거지만, 함께 성장하는 게 쉽지 않은 것 같습니다.\n혼자 이런 거 저런 거 해내는 건 좀 잘했던 것 같은데,\n같이 프로젝트를 하거나 할 때 이해받지 못한다는 느낌이 들거나,\n무언가 답답하면 포기하고 혼자 갈 때가 있었습니다.\n그래도 결국에는 다 같이 가야한다고는 막연히 느끼고는 있습니다.\n각자 저마다의 페이스가 있으니 발등에 불 떨어지거나 급한 건 등은 여유가 있거나, 하고 싶거나, 잘하는 사람이 쳐내는 게 맞겠지만요.\n시간을 내서라도 함께 뭘 하는 활동에 꼭 참여하려고 하는 게,\n어떻게 하면 \u0026lsquo;같이\u0026rsquo; 갈 수 있을지에 대해서 많이 생각하는 편입니다.\nStep 2. 시작은 했는데 뭘 써야 할 지는 아직 고민 중입니다 벌써 12월입니다.\n사실 미리 써둬야지 했는데ㅋㅋㅋ 바쁘면 잊게 됩니다.\n8기 때는 미리 목차를 짜두고 그 목차에 맞춰서 썼었는데,\n9기 때는 좀 더 자유롭게 쓰려고 합니다.\nStep 3. 9기 때의 목표 다른 개발자 분들의 글을 최대한 많이 읽기 입니다. 8기 때는 거의 못 읽었습니다. 마감 전에 글 쓰는 데 바빴고,\n슬랙 쓰는 방법은 8기 끝날 때까지 다른 채널에 어떻게 들어가는지도 몰랐습니다🥺\n소통과 공유 사이드 프로젝트나 관심있는 것의 모임이 있으면 만들거나 들어가자.\n였는데, 요즘엔 바빠서 못하고 있습니다.\n일단 일상생활을 잘 해내야 할 수 있기에, 2번은 일단 옵션으로 둘 것 같습니다.\nhugo로 블로그를 운영해보자 go 언어를 배워보고 싶었는데,\n이참에 hugo로 블로그를 운영해보려고 했습니다.\n적응이 안되긴 하지만 새롭게 도전!\n최종 목표: 결국은 글쓰기 2주에 한 번 글쓰기.\n글쓰기는 결국 학습과 성장 과정의 기록이고,\n개인 브랜딩이 아닐까라고 생각합니다.\n전에 썼던 글을 보고 틀린 걸 발견하면 수치와 부끄러움을 느끼긴 하지만,\n나는 지금 이런 길로 가고 있구나 라고 알려주는 단서 같습니다.\nStep 4. 마무리 좋아하는 시인 중에 William Blake 가 있습니다.\n그 분이 쓴 시 구절의 일부를 작성하고 끝내겠습니다.\nTo see a World in a Grain of Sand 한 줌의 모래에서 세계를 보고 And a Heaven in a Wild Flower 길 가에 핀 꽃에서 천국을 보고 Hold Infinity in the palm of your hand 손으로 무한을 움켜쥐고 And Eternity in an hour 시간 속에서 영원을 잡는다 함께 잘 성장했으면 좋겠습니다.\n","permalink":"https://mhkim.dev/posts/writingndeveloping-9th/","summary":"\u003ch2 id=\"step-0-글쓰는-개발자-모임-9기를-시작하면서\"\u003eStep 0. 글쓰는 개발자 모임 9기를 시작하면서\u0026hellip;\u003c/h2\u003e\n\u003cp\u003e글또는 작년쯤에 알게 되었습니다.\u003c/p\u003e\n\u003cp\u003e에러 등을 검색할 때 종종 올라왔던 글이 글또 분들이 쓰셨던 글이 있었고,\u003c/p\u003e\n\u003cp\u003e꾸준히 글을 쓴다는 이야기를 들어서 가입하게 되었습니다.\u003c/p\u003e\n\u003cp\u003e혼자 쓰는 것도 좋지만 같이 쓰면 더 좋을 것 같아서 올해 초 8기에 신청을 해서 8기 활동을 했습니다.\u003c/p\u003e\n\u003cp\u003e초반에는 거의 못했고 후반에 좀 더 많은 활동을 했었던 걸로 기억합니다.\n(커피챗, 데이터반상회 준비위. 생전 처음해보는 굿즈 만들기 등\u0026hellip;)\u003c/p\u003e\n\u003cp\u003e8기가 끝난 뒤에, 좀 더 이런 저런 걸 해보면 좋을 것 같아서 9기도 신청했습니다.\u003c/p\u003e","title":"글쓰는개발자모임9기-글또를 시작하면서"},{"content":"Prayer Where there is discord, may bring harmony\nWhere there is error, may bring truth\nWhere there is doubt, may bring faith\nWhere there is despair, may bring hope\n기도문 분열이 있는 곳에, 화합을\n오류가 있는 곳에, 진실을\n의심이 있는 곳에, 믿음을\n절망이 있는 곳에, 희망을\n","permalink":"https://mhkim.dev/about/","summary":"about","title":"About"}]