<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>o_obigstar.log</title>
        <link>https://velog.io/</link>
        <description>AI_CV에 관심 있는 대학생</description>
        <lastBuildDate>Fri, 17 Jan 2025 07:08:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>o_obigstar.log</title>
            <url>https://velog.velcdn.com/images/o_obigstar/profile/d35ff50c-a3c6-4eb2-a6a7-b33b3296e07a/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. o_obigstar.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/o_obigstar" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[MAML 소개]]></title>
            <link>https://velog.io/@o_obigstar/Paper-review-Model-Agnostic-Meta-Learning-for-Fast-Adaptation-of-Deep-Networks</link>
            <guid>https://velog.io/@o_obigstar/Paper-review-Model-Agnostic-Meta-Learning-for-Fast-Adaptation-of-Deep-Networks</guid>
            <pubDate>Fri, 17 Jan 2025 07:08:51 GMT</pubDate>
            <description><![CDATA[<p>&#39;Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks&#39; 논문에서 소개하고 있는 Model-Agnostic Meta-Learning(MAML)이란 무엇인지 간단하게 소개하는 글입니다. 
자세한 알고리즘 설명은 다음 포스트에서 진행할 예정입니다. </p>
<h1 id="abtract">Abtract</h1>
<ul>
<li><p>이 논문은 모델에 관계 없이 적용 가능한(model-agnostic) meta-learning 알고리즘을 제안한다.</p>
</li>
<li><p>이 알고리즘은 Gradient descent로 훈련된 모든 모델과 호환되며 분류, 회귀, 강화 학습 등 다양한 학습 문제에 적용될 수 있다.</p>
<h2 id="meta-learning의-목표">meta-learning의 목표</h2>
<blockquote>
<p>다양한 task에 대해 모델을 훈련시켜 소수의 training sample만으로 새로운 task를 해결할 수 있도록 하는 것</p>
</blockquote>
</li>
<li><p>해당 논문에서는 모델의 파라미터들을 명시적으로 학습시켜, <strong><em>새로운 task</em></strong>에서 _<strong>적은 양의 학습 데이터</strong>_로 _<strong>소수의 gradient steps</strong>_를 통해 해당 task에서 <strong>좋은 일반화 성능</strong>을 내도록 하는 방법론을 소개한다.</p>
<h2 id="성능">성능</h2>
</li>
<li><p>두 개의 few-shot 이미지 분류 벤치마크에서 SOTA 성능을 보임.</p>
</li>
<li><p>few-shot 회귀 task에서 좋은 결과를 도출해냄.</p>
</li>
<li><p>신경망 policies로 policy gradient 강화 학습을 위한 fine-tuning을 더 빠르게 진행할 수 있게 함.</p>
</li>
</ul>
<hr>
<h1 id="1-introduction">1. Introduction</h1>
<p>AI 에이전트는 인간처럼 몇 가지 예문만으로 빠르게 학습하고 데이터가 확보됨에 따라 계속해서 적응할 수 있어야 한다. 
이러한 빠르고 유연한 학습은 쉽지 않다.</p>
<ul>
<li>에이전트는 새로운 데이터에 과적합되지 않으면서 이전 경험을 소량의 새로운 정보와 통합해야 하기 때문이다.</li>
<li>또한, 이전 경험과 새로운 데이터의 형태는 task에 따라 달라질 것이기에 다루기 까다롭다.</li>
</ul>
<p>따라서 학습(또는 meta-learning) 메커니즘이 task와 task 수행에 필요한 계산 형태에 general하게 적용되도록 해야 한다.</p>
<ul>
<li>gradient descent 과정으로 훈련되는 모든 모델에 적용할 수 있는 방법론을 제안한다. 우선, 이 논문의 초점은 심층 신경망 모델에 맞춰져있지만, 최소한의 수정으로 분류, 회귀, 정책 그래디언트 강화 학습과 같은 다양한 문제도 쉽게 다룰 수 있음을 설명할 수 있다. </li>
</ul>
<h3 id="the-key-idea">The key idea</h3>
<p>모델의 초기 파라미터들을 훈련하여 새로운 task에서의 소량의 데이터로 계산된 하나 이상의 gradient steps를 통해 매개 변수를 업데이트 한 후, 모델이 최대 성능을 발휘하도록 하는 것.</p>
<ul>
<li>업데이트 함수 도는 학습 규칙을 학습하는 이전의 meta-learning 방법과 달리, 이 논문에서 소개하는 알고리즘은 학습된 매개변수의 수를 늘리거나 모델 구조에 제약을 두지 않는다. </li>
<li>이는 fully connected, convolutional, or recurrent neural networks와 쉽게 결합할 수 있다. </li>
</ul>
<p>적은 수의 gradient 업데이트만으로도 새로운 task에 대한 빠른 학습이 가능하도록 모델의 매개변수를 학습하는 것.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[행렬의 계수, rank]]></title>
            <link>https://velog.io/@o_obigstar/%ED%96%89%EB%A0%AC%EC%9D%98-%EA%B3%84%EC%88%98-rank</link>
            <guid>https://velog.io/@o_obigstar/%ED%96%89%EB%A0%AC%EC%9D%98-%EA%B3%84%EC%88%98-rank</guid>
            <pubDate>Sun, 12 Jan 2025 09:23:28 GMT</pubDate>
            <description><![CDATA[<h1 id="1-열공간column-space과-행공간row-space">1. 열공간(column space)과 행공간(row space)</h1>
<ul>
<li>$m\times n$ 행렬 $A$
<img src="https://velog.velcdn.com/images/o_obigstar/post/4ece14a5-0ff1-46fb-8777-3ec1c2dc9d38/image.png" alt=""></li>
<li>n개의 열벡터에 의해 생성되는 $\mathbb{R}^m$의 부분 공간을 A의 <strong>열공간(column space)</strong>이라고 한다.</li>
<li>m개의 행벡터에 의해 생성되는 $\mathbb{R}^n$의 부분 공간을 A의 <strong>행공간(row space)</strong>이라고 한다.</li>
</ul>
<p>ex) 
$$ A_{3\times4} = \begin{pmatrix}
-1 &amp; 0 &amp; 1 &amp; 2 \
2 &amp; 5 &amp; 3 &amp; -2 \
3 &amp; 0 &amp; 0 &amp; 1 
\end{pmatrix} $$</p>
<p>column space와 row space는 아래와 같다.
$$\mathrm{column \space space}={\alpha_1 \begin{pmatrix}
-1 \
2 \
3
\end{pmatrix} +\alpha_2 \begin{pmatrix}
0 \
5 \
0
\end{pmatrix} +\alpha_3 \begin{pmatrix}
1 \
3 \
0
\end{pmatrix} + \alpha_4 \begin{pmatrix}
2 \
-2 \
1
\end{pmatrix} } $$ 
$$\mathrm{row \space space}={\beta_1 \begin{pmatrix}
-1 &amp; 0 &amp; 1 &amp; 2
\end{pmatrix}^{\prime} +\beta_2 \begin{pmatrix}
2 &amp; 5 &amp; 3 &amp; -2
\end{pmatrix}^{\prime} +\beta_3 \begin{pmatrix}
3 &amp; 0 &amp; 0 &amp; 1
\end{pmatrix}^{\prime} } $$</p>
<h1 id="2-행렬의-계수-rank">2. 행렬의 계수, rank</h1>
<p>$rank(A) = r(A) =$ 행공간의 차원 $=$ 열공간의 차원</p>
<ul>
<li>즉, 행 벡터들(또는 열 벡터들) 중에서 <strong>선형 독립(linearly independent)하는 벡터들의 갯수</strong>를 행렬의 <strong>계수(rank)</strong>라고 한다. </li>
<li>행렬 $A$가 $n\times n$ 정사각행렬이고 $dim(A)=n$ 일 때, 
$A$를 <strong>정칙행렬(regular matrix)</strong>, <strong>완전 계수 행렬(full rank matrix)</strong>, 또는 <strong>비특이행렬, 가역행렬(nonsingular matrix)</strong>이라고 한다. <h3 id="nonsingular-singular-inverse">nonsingular, singular, inverse</h3>
</li>
<li>nonsingular matrix (가역행렬, 비특이행렬): 역행렬이 존재하는 행렬
A nonsingular matrix $A$ has a unique <strong><em>inverse</em></strong>, denoted by $A^{-1}$, with the property that
$$AA^{-1}=A^{-1}A=I
$$</li>
<li>singular matrix (특이행렬): 역행렬을 갖지 않는 행렬
If $A$ is square and less than full rank, then it does not have an inverse and is said to be <strong><em>singular</em></strong>.</li>
</ul>
<h3 id="theorem">Theorem</h3>
<p>$A$ : $m\times n$ 행렬
① $rank(A) = rank(A^{\prime})$
② $rank(A) \le min(m,n)$
③ $rank(AB) \le min(rank(A), rank(B)) \quad$ for any $n \times p$ matrix $B$</p>
<ul>
<li><img src="https://velog.velcdn.com/images/o_obigstar/post/a8e07c98-cae1-4c4f-89e5-02f004e7b3a2/image.png" alt=""></li>
</ul>
<p>④ $rank(AB) = rank(A) \quad$ for  any $n\times n$ nonsingular matrix $B$</p>
<ul>
<li><img src="https://velog.velcdn.com/images/o_obigstar/post/987107c0-3c04-45fc-839d-ba5c7ae43c11/image.png" alt=""></li>
</ul>
<p>⑤ If $A$ is an $m\times m$ matrix, then $|A| = 0 \Leftrightarrow rank(A) &lt; m$</p>
<ul>
<li>$A$의 행렬식이 0이 아니라면, $rank(A)=m$</li>
</ul>
<p>⑥ $rank(AA^{\prime})=rank(A^{\prime}A)=rank(A)$
⑦ If $A$ is idempotent ($A^2=A$), then $rank(A)=trace(A)$</p>
<ul>
<li>행렬 $A$가 멱등행렬이라면, $A$의 계수는 $A$의 대각합과 같다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[벡터 공간의 기저와 차원, 정규 직교 기저, 그람-슈미트 정규직교화]]></title>
            <link>https://velog.io/@o_obigstar/%EB%B2%A1%ED%84%B0-%EA%B3%B5%EA%B0%84%EC%9D%98-%EA%B8%B0%EC%A0%80basis%EC%99%80-%EC%B0%A8%EC%9B%90dimension-%EC%A0%95%EA%B7%9C-%EC%A7%81%EA%B5%90-%EA%B8%B0%EC%A0%80orthonormal-basis-%EA%B7%B8%EB%9E%8C-%EC%8A%88%EB%AF%B8%ED%8A%B8-%EC%A0%95%EA%B7%9C%EC%A7%81%EA%B5%90%ED%99%94</link>
            <guid>https://velog.io/@o_obigstar/%EB%B2%A1%ED%84%B0-%EA%B3%B5%EA%B0%84%EC%9D%98-%EA%B8%B0%EC%A0%80basis%EC%99%80-%EC%B0%A8%EC%9B%90dimension-%EC%A0%95%EA%B7%9C-%EC%A7%81%EA%B5%90-%EA%B8%B0%EC%A0%80orthonormal-basis-%EA%B7%B8%EB%9E%8C-%EC%8A%88%EB%AF%B8%ED%8A%B8-%EC%A0%95%EA%B7%9C%EC%A7%81%EA%B5%90%ED%99%94</guid>
            <pubDate>Sat, 11 Jan 2025 16:22:26 GMT</pubDate>
            <description><![CDATA[<h2 id="벡터-공간의-기저basis와-차원dimension">벡터 공간의 기저(basis)와 차원(dimension)</h2>
<p>벡터 공간 S에 있는 벡터의 집합 ${x_1,x_2,\dots,x_n}$에 대하여 다음을 만족하면 ${x_1,x_2,\dots,x_n}$은 S의 기저(basis)이다. </p>
<ol>
<li>${x_1,x_2,\dots,x_n}$ spans the vector space S.</li>
<li>${x_1,x_2,\dots,x_n}$ is linearly independent. </li>
</ol>
<ul>
<li>즉, S에 속하는 모든 벡터는 ${x_1,x_2,\dots,x_n}$의 선형 결합으로 표현되며, ${x_1,x_2,\dots,x_n}$ 중 어느 벡터도 다른 벡터의 선형 결합으로 표현되지 않으면, S의 기저라고 할 수 있다. </li>
<li>이 기저에 속하는 벡터들의 갯수를 <strong>차원(dimension)</strong>이라고 한다.
$$dim(S) = n
$$</li>
<li>벡터 공간의 기저는 unique하지 않지만, 모든 기저는 벡터들의 갯수 즉, 차원은 동일하다.<h3 id="theorem">Theorem</h3>
</li>
</ul>
<ol>
<li>벡터 공간 S의 기저에 포함된 벡터의 수는 일정하다.</li>
<li>벡터 공간 S의 차원이 m이고 벡터 집합 $B={x_1,x_2,\dots,x_m}$ ($B \subset S$) 가 독립이면, B는 S의 기저이다.</li>
<li>벡터 집합 $B={x_1,x_2,\dots,x_m}$가 벡터공간 S의 생성 집합이고 S의 차원이 m이면, B는 선형 독립이고 S의 기저이다. </li>
</ol>
<ul>
<li>생성 집합: 벡터 공간 S에 포함되는 m개의 벡터로 이루어진 집합 ${x_1,x_2,\dots,x_m}$에 대하여 S에 포함되는 모든 벡터가 ${x_1,x_2,\dots,x_m}$의 선형 결합으로 표현될 때, 이 집합을 S의 생성 집합(spanning set)이라고 한다.</li>
</ul>
<ol start="4">
<li>벡터들의 집합 $B={x_1,x_2,\dots,x_m}$가 벡터 공간 S의 기저이면, S에 속하는 모든 벡터 s에 대하여 $s=\alpha_1 x_1 + \cdots + \alpha_m x_m$을 만족하는 벡터 $\alpha=(\alpha_1, \dots,\alpha_m)$가 존재한다. </li>
</ol>
<h2 id="기저basis와-좌표coordinates">기저(basis)와 좌표(coordinates)</h2>
<p>${x_1,x_2,\dots,x_m}$이 벡터 공간 S의 기저라면, S에 속하는 임의의 벡터 x는 다음과 같이 고유한 표현을 가진다. 
$$x=\alpha_1 x_1 + \alpha_2 x_2 + \cdots + \alpha_n x_n
$$
여기서 $\alpha_1, \alpha_2, \dots , \alpha_n$는 <strong>스칼라 계수</strong>이며, 이를 ${x_1,x_2,\dots,x_m}$라는 기저에 대한 <strong>x의 좌표(coordinates)</strong>라고 부른다. </p>
<ul>
<li><p>예시) 2차원 벡터 공간 $\mathbb{R^2}$에서 기저 ${(1,0), (0,1)}$가 주어진 경우, 벡터 $(3,4)$는 다음과 같이 유일하게 표현된다.
$$(3,4) = 3 \cdot (1,0) + 4\cdot (0,1)
$$
여기서 3과 4가 바로 $(1,0), (0,1)$에 대한 $(3,4)$의 좌표이다. </p>
<h2 id="정규-직교-기저-orthonormal-basis">정규 직교 기저, orthonormal basis</h2>
</li>
<li><p><strong>Definition 1.</strong>
두 벡터 $x$, $y$에 대하여 다음 두 조건을 만족한다면, 이 두 벡터는 <strong>정규 직교 벡터</strong>(<strong>orthonormal vector</strong>, orthogonal+normal)라고 한다.
$$|x|=|y|=1
$$
$$x^{\prime}y=\space &lt;x,y&gt; \space=0
$$</p>
</li>
<li><p><strong>Definition 2.</strong>
벡터 공간 S의 기저 B를 이루는 벡터들이 다음의 조건을 만족할 때, B를 <strong>정규 직교 기저(orthonormal basis)</strong>라고 한다. </p>
</li>
</ul>
<p>$$|x|=1, \quad |y|=1, \quad x^{\prime}y=0, \quad \forall x, y \in B
 $$
 다르게 표현하면 아래와 같다.</p>
<ul>
<li>벡터 공간 S의 기저 B를 이루는 벡터 $x_1, \dots, x_n$가 아래의 조건을 만족한다면, 정규 직교 기저이다.
$$ &lt;x_i, x_j&gt; = \begin{cases} 0 &amp; \mathrm{if} \space i \neq j \
1 &amp; \mathrm{if}\space i = j\end{cases}$$</li>
</ul>
<h3 id="theorem-1">Theorem</h3>
<p> ${x_1, \dots, x_n}$를 벡터 공간 S의 정규 직교 기저라고 할 때, 모든 $x \in S$에 대하여 아래가 성립한다.
 $$x = \space &lt;x,x_1&gt;x_1+&lt;x,x_2&gt;x_2+ \cdots+&lt;x,x_n&gt;x_n
 $$
 $$|x|^2=\sum_{i=1}^n&lt;x,x_i&gt;^2
 $$</p>
<hr>
<h3 id="그람-슈미트-정규직교화-gram-schmidt-orthonormalization">그람-슈미트 정규직교화 (Gram-Schmidt orthonormalization)</h3>
<p>일반적인 기저로부터 정규 직교 기저를 만드는 방법이다. </p>
<ul>
<li>${x_1, \dots, x_n}$를 벡터 공간 S의 기저라고 한다면, S의 직교 기저(orthogonal basis) $y_1, y_2, \dots y_n$는 다음과 같이 구할 수 있다.
$y_1 =x_1$
$y_2=x_2-\frac{&lt;x_2,y_1&gt;}{&lt;y_1,y_1&gt;}y_1$ : $x_2$를 $y_1$에 정사영한 벡터
$\vdots$
$y_n=x_n-\frac{&lt;x_2,y_1&gt;}{&lt;y_1,y_1&gt;}y_1-\cdots-\frac{&lt;x_n,y_{n-1}&gt;}{&lt;y_{n-1},y_{n-1}&gt;}y_{n-1}$
<img src="https://velog.velcdn.com/images/o_obigstar/post/926a21df-1ea9-493b-b5c9-a16de32fcf02/image.png" alt=""></li>
<li>이 $y_i$으로 아래의 정규화 식을 이용하여 정규 직교 기저 ${z_1, \dots,z_n }$를 구할 수 있다. 
$$z_i=\frac{1}{|y_i|}y_i
$$</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[벡터 공간, 선형 결합, 생성 집합, 내적, 선형 독립, 선형 종속]]></title>
            <link>https://velog.io/@o_obigstar/%EB%B2%A1%ED%84%B0-%EA%B3%B5%EA%B0%84-%EC%84%A0%ED%98%95-%EA%B2%B0%ED%95%A9-%EC%83%9D%EC%84%B1-%EC%A7%91%ED%95%A9-%EB%82%B4%EC%A0%81-%EC%84%A0%ED%98%95-%EB%8F%85%EB%A6%BD-%EC%84%A0%ED%98%95-%EC%A2%85%EC%86%8D</link>
            <guid>https://velog.io/@o_obigstar/%EB%B2%A1%ED%84%B0-%EA%B3%B5%EA%B0%84-%EC%84%A0%ED%98%95-%EA%B2%B0%ED%95%A9-%EC%83%9D%EC%84%B1-%EC%A7%91%ED%95%A9-%EB%82%B4%EC%A0%81-%EC%84%A0%ED%98%95-%EB%8F%85%EB%A6%BD-%EC%84%A0%ED%98%95-%EC%A2%85%EC%86%8D</guid>
            <pubDate>Sat, 11 Jan 2025 12:11:27 GMT</pubDate>
            <description><![CDATA[<h1 id="1-벡터-공간-vector-space">1. 벡터 공간, vector space</h1>
<p>벡터들을 포함하는 집합 S가 다음을 만족할 때 이를 벡터 공간(vector space)라고 한다.
(ⅰ) O ∈ S : 영벡터를 포함한다.
(ⅱ) x ∈ S, y ∈ S 이면 x+y ∈ S. (closed for addition)
(ⅲ) x ∈ S 이면, 임의의 실수 α에 대하여 αx ∈ S. (closed for scalar multiplication)</p>
<h3 id="선형-결합-linear-combination">선형 결합, linear combination</h3>
<p>벡터들의 집합 S에 있는 k개의 벡터 $x_1, x_2, \dots , x_k$에 대하여, 
각 벡터 $x_i$에 스칼라 $\alpha_i$를 곱하여 이들을 합해서 얻은 벡터 $v=\sum_i\alpha_i x_i$를 
벡터 $x_1, x_2, \dots , x_k$의 <strong>선형 결합(linear combination)</strong>이라고 한다. </p>
<h3 id="생성-집합-spanning-set">생성 집합, spanning set</h3>
<p>벡터 공간 S에 포함되는 m개의 벡터로 이루어진 집합 ${x_1,  \dots, x_m}$에 대하여 S에 포함되는 모든 벡터가 ${x_1,  \dots, x_m}$의 선형 결합으로 표현될 때, 
이 집합을 S의 생성 집합(spanning set)이라고 한다.</p>
<ul>
<li>즉, S에 속하는 모든 벡터 s에 대해 
$s=c_1x_1 + \cdots+ c_mx_m$을 만족하는 벡터 $c=(c_1,\dots, c_m) \in \mathbb{R^m}$가 존재할 때,
${x_1,  \dots, x_m}$을 S의 생성 집합이라고 한다. </li>
</ul>
<h3 id="내적-inner-product">내적, inner product</h3>
<ul>
<li>$S \in \mathbb{R^m}$에 속한 두 벡터 $a, b$의 내적은 다음과 같이 정의된다.
$$a\cdot b = \sum_{k=1}^{n}a_kb_k =a^{\prime}b=b^{\prime}a= &lt;a,b&gt;
$$</li>
<li>두 벡터 사이의 거리
$$|a-b|=\sqrt{\sum_{i=1}^{n}(a_i-b_i)^2}=\sqrt{(a-b)^{\prime}(a-b)}=\sqrt{(a-b)\cdot(a-b)}
$$</li>
<li>자기 자신과의 내적: 벡터 $a$의 원점으로부터의 길이(크기)
$$a\cdot a=a^{\prime}a=|a|^2
$$</li>
<li>내적의 성질
1) $&lt;x,x&gt;\ge0$ , $&lt;x,x&gt; = 0 \Leftrightarrow x=0$
2) $&lt;x,y&gt;\space=\space&lt;y,x&gt;$
3) $&lt;\alpha x,y&gt;\space=\space \alpha&lt;x,y&gt;$
4) $&lt;x+y,z&gt;\space=\space&lt;x,z&gt;+&lt;y,z&gt;$</li>
</ul>
<h3 id="norm">Norm</h3>
<p>$$|x|=\sqrt{&lt;x,x&gt;}=\sqrt{\sum_{i=1}^mx_i^2}
$$</p>
<ul>
<li>노름의 성질
1) $|x| \ge0$, $|x| = 0 \Leftrightarrow x=0$
2) $|\alpha x|= |\alpha|\cdot|x|$
3) $|x+y|\le|x|+|y|$ 
세 번째 성질은 양변을 각각 제곱하여 전개한 후, 코사인 성질($x\cdot y \le |x| \cdot |y|)$을 사용하면 증명할 수 있다. </li>
</ul>
<h1 id="2-선형-종속linearly-dependent과-선형-독립linearly-independent">2. 선형 종속(linearly dependent)과 선형 독립(linearly independent)</h1>
<p>벡터 공간 S에 포함되는 n개의 벡터로 이루어진 집합 ${x_1,  \dots, x_n}$에 대하여 <strong>다음 식을 만족하는 0이 아닌 스칼라 값 $\alpha$가 존재한다</strong>면, ${x_1,  \dots, x_n}$은 <strong>선형 종속(linearly dependent)</strong>이다. 
$$\alpha_1 x_1 + \alpha_2 x_2 +\cdots +\alpha_n x_n=0
$$</p>
<p>반대로, 모든 $\alpha$가 0이어야만 위 식을 성립한다면, ${x_1,  \dots, x_n}$은 <strong>선형 독립(linearly independent)</strong>이다. </p>
<ul>
<li>Theorem) A collection of vectors ${x_1,  \dots, x_n}$ is linearly dependent if and only ($\Leftrightarrow$) if at least one of the vectors can be expressed as a linear combination of the remaining vectors.</li>
<li>즉, ${x_1,  \dots, x_n}$ 중의 <strong>한 벡터가 다른 벡터의 선형 결합으로 표현될 수 있다</strong>면 <strong>선형 종속</strong>이고, </li>
<li>${x_1,  \dots, x_n}$ 중의 <strong>어느 벡터도 다른 벡터의 선형 결합으로 표현할 수 없다</strong>면 <strong>선형 독립</strong>이다. </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[행렬 및 벡터 표기법]]></title>
            <link>https://velog.io/@o_obigstar/%ED%96%89%EB%A0%AC-%EB%B0%8F-%EB%B2%A1%ED%84%B0-%ED%91%9C%EA%B8%B0%EB%B2%95</link>
            <guid>https://velog.io/@o_obigstar/%ED%96%89%EB%A0%AC-%EB%B0%8F-%EB%B2%A1%ED%84%B0-%ED%91%9C%EA%B8%B0%EB%B2%95</guid>
            <pubDate>Mon, 06 Jan 2025 15:51:22 GMT</pubDate>
            <description><![CDATA[<p>앨빈 C. 렌쳐의 책 <strong>&#39;Linear models in statistics&#39;</strong>을 읽고 정리한 내용입니다. </p>
<hr>
<h1 id="21-행렬-및-벡터-표기법">2.1 행렬 및 벡터 표기법</h1>
<h2 id="211-matrices-vectors-and-scalars">2.1.1 Matrices, Vectors, and Scalars</h2>
<h3 id="matrix-행렬">matrix, 행렬</h3>
<p>행렬을 나타내기 위해 대문자 굵은 글씨를 사용하고, 이 책에서 행렬의 모든 요소는 실수이거나 실수를 나타내는 변수이다. 
$$\mathbf{A}=(a_{ij})=\begin{pmatrix}
a_{11} &amp; a_{12} \
a_{21} &amp; a_{22} \
a_{31} &amp; a_{32} 
\end{pmatrix} $$
$a_{ij}$의 첫 번째 아래 첨자는 행, 두 번째는 열을 나타낸다. 행렬 $\mathbf{A}$는 3개의 행과 2개의 열을 가지고 있으며, $\mathbf{A}$의 크기는  $3\times2$라고 한다. </p>
<h3 id="vector-벡터">vector, 벡터</h3>
<p>벡터는 단일 행 또는 열이 있는 행렬이다. 벡터의 요소는 단일 아래 첨자로 표현한다. 
$$\mathbf{x} = \begin{pmatrix}
x_1 \
x_2 \
x_3 
\end{pmatrix}$$
보통 열 벡터의 경우 소문자 굵은 글씨를 사용하며, 행 벡터의 경우 글씨 뒤에 프라임($\prime)$을 붙여 사용한다. 
$$\mathbf{x^{\prime}} = (x_1,x_2,x_3) = \begin{pmatrix}x_1&amp;x_2&amp;x_3 \
\end{pmatrix}$$
<strong>기하학적</strong>으로, p개의 원소를 가진 행 또는 열 벡터는 p차원 공간의 점과 관련 있으며, 벡터의 원소는 점의 좌표이다. </p>
<h3 id="scalar-스칼라">scalar, 스칼라</h3>
<p>행렬과 벡터의 관점으로 볼 때 단일 실수를 _<strong>스칼라(scalar)</strong>_라고 한다. </p>
<h2 id="212-matrix-equality">2.1.2 Matrix Equality</h2>
<p>크기가 같고 해당 위치의 요소가 같은 두 행렬 또는 두 벡터는 서로 같다. 
$$\begin{pmatrix}
5 &amp; 4 &amp; -2 \
0 &amp; -4 &amp; 7 
\end{pmatrix} = \begin{pmatrix}
5 &amp; 4 &amp; -2 \
0 &amp; -4 &amp; 7 
\end{pmatrix} \neq \begin{pmatrix}
5 &amp; 4 &amp; 1 \
0 &amp; -4 &amp; 7 
\end{pmatrix}$$</p>
<h2 id="213-transpose">2.1.3 Transpose</h2>
<p>행렬 $\mathbf{A}$의 행과 열을 바꾼 행렬을 $\mathbf{A}$의 <em><strong>전치행렬(transpose)</strong>_이라고 하며 $\mathbf{A^{\prime}}$로 표현한다. 
$$\mathbf{A^{\prime}}=(a</em>{ij})^{\prime}=(a_{ji})  \tag{2.1}
$$
<strong>Theorem 2.1</strong> $\mathbf{A}$가 임의의 행렬일 때, 
$$\mathbf{(A^{\prime})^{\prime}}=\mathbf{A}
$$
Proof. (2.1)에 의해, $\mathbf{A^{\prime}}=(a_{ij})^{\prime}=(a_{ji})$. 그러면 $\mathbf{(A^{\prime})^{\prime}}=(a_{ji})^{\prime}=a_{ij}=\mathbf{A}$.</p>
<h2 id="214-특수한-형태의-행렬">2.1.4 특수한 형태의 행렬</h2>
<h3 id="symmetric-matrix-대칭-행렬">symmetric matrix, 대칭 행렬</h3>
<ul>
<li>$\mathbf{A}^{\prime}=\mathbf{A}$라면, &#39;행렬 $\mathbf{A}$는 _<strong>symmetric</strong>_하다&#39;라고 한다. </li>
<li>모든 대칭 행렬은 행의 수과 열의 수가 같은 정사각행렬(정방행렬)이다. <h3 id="diagonal-matrix-대각-행렬">diagonal matrix, 대각 행렬</h3>
</li>
<li>행렬의 대각선이 아닌 모든 위치에 0이 놓인 행렬을 <strong><em>대각 행렬(diagonal matrix)</em></strong>이라고 한다.</li>
</ul>
<p>$$\mathbf{D} = \begin{pmatrix}
3 &amp; 0 &amp; 0 \
0 &amp; 2 &amp; 0 \
0 &amp; 0 &amp; 0 
\end{pmatrix}= \mathrm{diag}(3,\space2, \space 0) $$</p>
<ul>
<li>$\mathbf{A}$와 동일한 대각선 요소를 같는 대각 행렬을 나타내기 위해 $\mathrm{diag}(\mathbf{A})$ 표기법을 사용한다. 
$$\mathbf{A}=\begin{pmatrix}
5 &amp; 3 &amp; -2 \
3 &amp; -1 &amp; 4 \
1 &amp; 4 &amp; 8
\end{pmatrix}, \space \mathrm{diag}(\mathbf{A})=\begin{pmatrix}
5 &amp; 0 &amp; 0 \
0 &amp; -1 &amp; 0 \
0 &amp; 0 &amp; 8
\end{pmatrix}$$<h3 id="identity-matrix-단위-행렬-mathbfi">identity matrix, 단위 행렬 ($\mathbf{I}$)</h3>
</li>
<li>대각선 위치에 1이 있는 대각 행렬을 _<strong>단위 행렬(identity matrix)</strong>_라고 하며, $\mathbf{I}$로 표시한다. 
$$\mathbf{I}=\begin{pmatrix}
1 &amp; 0 &amp; 0 \
0 &amp; 1 &amp; 0 \
0 &amp; 0 &amp; 1
\end{pmatrix}$$<h3 id="upper-triangular-matrix-상삼각행렬">upper triangular matrix, 상삼각행렬</h3>
</li>
<li>대각선 아래에 있는 모든 요소가 0인 정사각행렬을 _<strong>상삼각행렬(upper triangular matrix)</strong>_라고 한다. 
$$\mathbf{T}=\begin{pmatrix}
3 &amp; 4 &amp; -1 \
0 &amp; 2 &amp; 5 \
0 &amp; 0 &amp; 0
\end{pmatrix}$$<h3 id="lower-triangular-matrix-하삼각행렬">lower triangular matrix, 하삼각행렬</h3>
</li>
<li>상삼각행렬의 반대로, 대각선 위에 있는 모든 요소가 0인 정사각 행렬이다. </li>
</ul>
<h3 id="0과-1의-벡터와-행렬-mathbf0-mathbfo-mathbfj-mathbfj">0과 1의 벡터와 행렬 ($\mathbf{0}$, $\mathbf{O}$, $\mathbf{j}$, $\mathbf{J}$)</h3>
<ul>
<li>1의 벡터는 $\mathbf{j}$로 표현한다. 
$$\mathbf{j}=\begin{pmatrix}
1\
1 \
\vdots \
1
\end{pmatrix}$$</li>
<li>1의 정사각행렬을 $\mathbf{J}$라고 표현한다. 
$$\mathbf{J}=\begin{pmatrix}
1 &amp; 1 &amp; 1 \
1 &amp; 1 &amp; 1 \
1 &amp; 1 &amp; 1
\end{pmatrix}$$</li>
<li>0의 벡터를 $\mathbf{0}$으로, 0의 행렬을 $\mathbf{O}$로 표현한다.
$$\mathbf{0}=\begin{pmatrix}
0\
0 \
0
\end{pmatrix}, \space \mathbf{O}=\begin{pmatrix}
0 &amp; 0 &amp; 0 &amp; 0\
0 &amp; 0 &amp; 0 &amp; 0\
0 &amp; 0 &amp; 0 &amp; 0
\end{pmatrix}$$</li>
</ul>
<p>앨빈 C. 렌쳐의 책 <strong>&#39;Linear models in statistics&#39;</strong>을 읽고 정리한 내용입니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Window에서의 Airflow실습: Airflow 설치]]></title>
            <link>https://velog.io/@o_obigstar/Window%EC%97%90%EC%84%9C%EC%9D%98-Airflow%EC%8B%A4%EC%8A%B5-Airflow-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@o_obigstar/Window%EC%97%90%EC%84%9C%EC%9D%98-Airflow%EC%8B%A4%EC%8A%B5-Airflow-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Tue, 10 Dec 2024 08:04:50 GMT</pubDate>
            <description><![CDATA[<h1 id="airflow-실습을-위한-준비-과정">AirFlow 실습을 위한 준비 과정</h1>
<p>내가 가지고 있는 노트북이 Window 환경이기 때문에 Vscode 내의 wsl Terminal에서 진행하였다. </p>
<h2 id="1-wslwindows-subsstyem-for-linux-실행">1. WSL(Windows Subsstyem for Linux) 실행</h2>
<p>ctrl+` 단축키로 터미널창을 열어주고, +버튼 옆 꺽쇠를 눌러 WSL을 연다. <img src="https://velog.velcdn.com/images/o_obigstar/post/7b4470d6-939b-447e-a4fe-8d3d1c256bb5/image.png" alt=""></p>
<h2 id="2-가상환경-설정">2. 가상환경 설정</h2>
<p>가상환경을 설정하기 전에 <code>python --version</code>으로 현재 Python의 버전부터 확인하는 것이 좋다. 그 버전과 동일한 버전의 파이썬이 가상환경 내에 사용되기 때문이다. </p>
<p><code>python -m venv .venv</code> : 가상환경 구축
<code>source .venv/bin/activate</code> : 가상환경 활성화</p>
<ul>
<li>만약, 가상환경을 이미 구축한 뒤에 파이썬 버전을 업그레이드 하고 싶다면 2-1을 확인하길 바란다. </li>
<li>나의 경우, Airflow를 설치할 때 
ERROR: 404 Client Error: Not Found for url: <a href="https://raw.githubusercontent.com/apache/airflow/constraints-2.6.3/constraints-3.6.txt">https://raw.githubusercontent.com/apache/airflow/constraints-2.6.3/constraints-3.6.txt</a>
라는 에러가 발생하여 python3.6이 아닌 3.10으로 진행하기 위해 버전 업그레이드를 진행했다. </li>
</ul>
<hr>
<h3 id="2-1-python-버전-업그레이드">2-1. Python 버전 업그레이드</h3>
<p>WSL 환경에서 Python 버전을 업그레이드하는 방법은 배포판(Ubuntu, Debian 등)에 따라 조금식 다를 수 있지만, 일반적으로 사용할 수 있는 방법 중 <strong>Pyenv</strong>를 사용하는 방법을 다루겠다. </p>
<ul>
<li>코드를 전체 복붙하여 실행시켰을 때 제대로 진행되지 않는다면, 한 줄씩 진행하기 바란다. (\로 이어진 코드는 한 줄이다.)<h3 id="1-pyenv-설치">1) <code>pyenv</code> 설치</h3>
현재 활성화된 가상환경을 <code>deactivate</code> 명령어로 비활성화 시킨 후 설치 준비를 한다.</li>
</ul>
<pre><code>deactivate
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
</code></pre><p>이 다음 pyenv를 설치한다.</p>
<pre><code>curl https://pyenv.run | bash
</code></pre><p>설치 후, 다음 내용을 파일에 추가한 뒤 셸을 다시 시작한다.</p>
<pre><code>export PATH=&quot;$HOME/.pyenv/bin:$PATH&quot;
eval &quot;$(pyenv init -)&quot;
eval &quot;$(pyenv virtualenv-init -)&quot;</code></pre><h3 id="2-원하는-버전으로-python-설치">2) 원하는 버전으로 Python 설치</h3>
<pre><code>pyenv install 3.10.12  # 예: 파이썬 3.10.12 설치
pyenv global 3.10.12   # 시스템 전역 파이썬 버전을 3.10.12로 설정
</code></pre><p>잘 설치되었는지 <code>python --version</code> 명령어로 확인한다.</p>
<h3 id="3-구축해두었던-가상환경에서-다시-python-버전-확인">3) 구축해두었던 가상환경에서 다시 Python 버전 확인</h3>
<pre><code>python -m venv .venv
source .venv/bin/activate
python --version</code></pre><ul>
<li>여기서 업그레이드 된 버전이 나온다면, 넘어가도 좋다. </li>
<li>하지만 기존 버전이 그대로 나온다면, 아래의 명령어로 어느 파이썬을 가리키는지 확인해야 한다.<pre><code>ls -l .venv/bin/python</code></pre></li>
<li><code>~/.pyenv/versions/3.10.12/bin/python</code>이 아닌 다른 경로(예: <code>/usr/bin/python3</code>)로 되어 있다면, venv 생성 시점에 여전히 시스템 파이썬을 참조했다는 뜻이다.</li>
<li>이럴 경우엔 기존에 생성된 venv 폴더를 삭제한 후 pyenv 파이썬의 절대 경로로 다시 venv를 생성하면 해결 된다.<pre><code>deactivate  # 기존에 활성화된 venv 비활성화
rm -rf .venv  # 잘못 생성된 venv 폴더 삭제
</code></pre></li>
</ul>
<h1 id="pyenv-파이썬의-절대-경로-확인-설치한-파이썬-경로-예시">pyenv 파이썬의 절대 경로 확인 (설치한 파이썬 경로 예시)</h1>
<p>~/.pyenv/versions/3.10.12/bin/python --version</p>
<h1 id="위-명령에서-31012가-나오면-해당-파이썬을-이용해-venv-생성">위 명령에서 3.10.12가 나오면 해당 파이썬을 이용해 venv 생성</h1>
<p>~/.pyenv/versions/3.10.12/bin/python -m venv .venv</p>
<p>source .venv/bin/activate
python --version  # 이제 3.10.12가 나와야 함</p>
<pre><code>---
# 3. Airflow 설치</code></pre><p>pip3 install pip --upgrade</p>
<p>AIRFLOW_VERSION=2.6.3
PYTHON_VERSION=&quot;$(python --version | cut -d &quot; &quot; -f 2 | cut -d &quot;.&quot; -f 1-2)&quot;
CONSTRAINT_URL=&quot;<a href="https://raw.githubusercontent.com/apache/airflow/">https://raw.githubusercontent.com/apache/airflow/</a> <br>constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt&quot;</p>
<p>pip3 install &quot;apache-airflow==${AIRFLOW_VERSION}&quot; --constraint &quot;${CONSTRAINT_URL}&quot;</p>
<pre><code>## 3-1. DB 초기화
설치가 완료되면 Airflow에서 사용할 DB를 초기화해야 한다. </code></pre><p>export AIRFLOW_HOME=<code>pwd</code></p>
<pre><code>위 코드를 실행한 후 `echo $AIRFLOW_HOME`를 실행시켰을 때 현재 디렉토리의 위치가 출력되는 것을 확인한다. 
그 다음 Airflow에서 사용할 DB를 초기화한다. </code></pre><p>airflow db init</p>
<pre><code>초기화하면 기본 파일이 생성된다.
* airflow.cfg: Airflow 설정 파일
* airflow.db: Airflow DB (이 실습해서는 SQLite를 사용)
![](https://velog.velcdn.com/images/o_obigstar/post/81439070-eacc-4e9f-9e37-55a11c0b8ca2/image.png)
(WSL이나 터미널 환경에서 현재 디렉토리를 VSCode로 열고 싶다면 `code .` 명령어를 입력하면 된다.)
## 3-2. 어드민 계정 생성
Airflow에서 사용할 어드민 계정을 생성한다.</code></pre><p>airflow users create <br>--username admin <br>--password &#39;해킹당하지 않게 너무 간단하지 않은 비밀번호&#39; <br>--firstname 이름 <br>--lastname 성 <br>--role Admin <br>--email <a href="mailto:asd@gmail.com">asd@gmail.com</a></p>
<p>```</p>
<hr>
<p>여기까지 에러 없이 완료했다면, Airflow 사용을 위한 준비를 마친 것이다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Evaluation of Object Detection]]></title>
            <link>https://velog.io/@o_obigstar/Evaluation-of-Object-Detection</link>
            <guid>https://velog.io/@o_obigstar/Evaluation-of-Object-Detection</guid>
            <pubDate>Thu, 03 Oct 2024 17:14:08 GMT</pubDate>
            <description><![CDATA[<p>이 포스트에서는 <strong>Object Detection</strong>에서 많이 사용되는 <strong>평가지표</strong>에 대해 알아보겠습니다.
모델이 객체를 얼마나 잘 잡아내느냐 평가하는 <strong>성능 평가</strong>, 모델이 얼마나 빠르게 돌아가느냐 평가하는 <strong>속도 평가</strong>로 나누어 살펴보겠습니다. </p>
<h1 id="1-성능-평가">1. 성능 평가</h1>
<p>얼마나 잘 객체를 탐지하는지 평가할 때 <strong>mAP</strong>를 주로 사용합니다.</p>
<h2 id="map-mean-average-precision">mAP (mean Average Precision)</h2>
<p>mAP는 각 클래스의 <strong>AP</strong>를 평균낸 것입니다. 
그렇다면 AP는 무엇일까요? AP를 포함하여 본격적으로 mAP에 대해 알아보기 위해 필요한 개념 몇 개 존재합니다. </p>
<blockquote>
<p>1) Confusion matrix
2) Precision, Recall
3) PR curve (Precision-Recall curve)
4) AP (Average Precision)
5) IOU (Intersection Over Union)</p>
</blockquote>
<h3 id="1--confusion-matrix">1)  Confusion matrix</h3>
<p><a href="https://en.innovatiana.com/post/understand-confusion-matrix-in-ai"><img src="https://velog.velcdn.com/images/o_obigstar/post/5a12ec79-1b8c-4bf1-bb6b-5cf715a17129/image.png" alt=""></a>
위와 같은 표를 confusion matrix라고 합니다. 여기서 Ground Truth는 실제 정답에 해당되는 값이고, Predicted는 예측 결과 값입니다. 
TP, FP, FN, TN으로 구성되어 있어 다소 헷갈릴 수 있습니다. 하지만 아래의 설명을 머리에 한 번 넣어두면 헷갈리지 않을 수 있습니다.</p>
<ul>
<li>뒤에 P가 온다면 Positive, 즉 1이라고 예측한 거라고 생각하면 됩니다. 실제로 1인지 0인지간에 일단 1이라고 예측한 것입니다. </li>
<li>반대로 N이 온다면 Negative, 즉 실제로 어떻든 간에 0으로 예측한 것입니다.</li>
</ul>
<p>여기서 앞에 T나 F가 온다면, 실제로 True(1)나 False(0)인 경우라고 생각하면 쉽습니다.
Object Detection에 맞게 설명한다면 아래와 같습니다. </p>
<ul>
<li>TP : 감지되어야 할 것이 감지된 경우</li>
<li>FP : 감지 되어야 할 것이 감지되지 않은 경우</li>
<li>FN : 감지되지 않아야 할 것이 감지되지 않은 경우</li>
<li>FP : 감지되지 않아야 할것이 감지된 경우<h3 id="2-precision-and-recall">2) Precision and Recall</h3>
위의 표에서 알 수 있듯이, <strong>Precision(정밀도)</strong>은 <strong>예측한 것들 중에서 실제로 정답인 것의 비율</strong>입니다.</li>
</ul>
<p>$$
Precision = \frac{TP}{TP+FP}=\frac{TP}{All \space Prediction}
$$</p>
<p><strong>Recall(재현율)</strong>은 <strong>실제 값들 중에서 감지된 것의 비율</strong>입니다. </p>
<p>$$
Recall = \frac{TP}{TP+FN}=\frac{TP}{All \space Gound \space Truth}
$$</p>
<h3 id="3-precision-recall-curve">3) Precision-Recall Curve</h3>
<p>sample들이 TP인지 FP인지 예측했던 확률값을 기준으로 sample 예측 값들을 내림차순 정렬을 한 후, 누적 TP 개수와 누적 FP 개수로 Precision, Recall을 계산합니다. 계산된 Recall을 x값으로, Precision값을 y값으로 하여 그린 그래프를 <strong>PR Curve</strong>라고 합니다. 
<a href="https://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html"><img src="https://velog.velcdn.com/images/o_obigstar/post/5cdb6249-2a6c-47ef-bd9a-760a2c868fbf/image.png" alt=""></a></p>
<h3 id="4-ap-average-precision">4) AP, Average Precision</h3>
<p><strong>AP</strong>는 PR Curve의 아래 면적을 계산한 값입니다. 
Precision이 변하는 값을 기준으로 그 전까지 아래의 사각형 면적을 계산한 뒤 모두 더하면 됩니다.
<a href="https://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html"><img src="https://velog.velcdn.com/images/o_obigstar/post/296f2a8e-cd2f-4315-8f4d-57cda5eda36b/image.png" alt=""></a></p>
<blockquote>
<p>그런데, <strong>TP와 FP를 어떻게 판단할까요?</strong> image classification 같은 경우는 명확하게 예측 확률이 0.5 미만이면 FP, 이상이면 TP로 판단하는데, 객체 탐지는 물체가 있을 법한 영역도 같이 예측하기에 추가로 더 고려해야 할 것이 있습니다. </p>
</blockquote>
<h3 id="5-iou-intersection-over-union">5) IOU, Intersection Over Union</h3>
<p>실제 객체의 위치와 예측한 위치가 어느정도 겹쳐 있어야 True로 볼 것인지를 나타내는 값입니다. 
실제 객체의 위치를 나타내는 bounding box와 예측한 bounding box의 넓이를 기준으로 서로 겹치는 부분의 넓이가 차지하는 비율을 계산하면 됩니다.</p>
<ul>
<li>실제 위치와 예측값의 교집합 / 실제 위치와 예측값의 합집합</li>
</ul>
<p><a href="https://www.baeldung.com/cs/object-detection-intersection-vs-union"><img src="https://velog.velcdn.com/images/o_obigstar/post/de706356-1ff3-493b-bb6c-0dee918ac44d/image.png" alt=""></a></p>
<p>따라서 IOU가 몇인지에 따라 TP, FP가 달라집니다.</p>
<ul>
<li>IOU 50 : IOU가 0.5 이상일 경우 True, 미만일 경우 False</li>
<li>IOU 70 : IOU가 0.7 이상일 경우 True, 미만일 경우 False</li>
</ul>
<h3 id="mean-average-precision">mean Average Precision</h3>
<p>AP는 하나의 클래스에 대한 누적 TP, FP로 Precision과 Recall을 사용하여 구한 것이라면, mAP는 여려개의 클래스가 존재할 때 사용됩니다. 
각 클래스에 대한 AP를 구한 뒤, 이를 평균을 낸 것이 <strong>mAP</strong>입니다. </p>
<p>$$
mAP = \frac{1}{n} \sum_{k=1}^{k= n}{AP_k}
$$</p>
<ul>
<li>mAP50 : IOU50으로 계산한 AP의 평균</li>
<li>mAP60 : IOU60으로 계산한 AP의 평균</li>
</ul>
<p>위와 같이 IOU를 어떤 값을 기준으로 할 것인지에 따라 mAP값이 달라질 수 있습니다. </p>
<h1 id="2-속도-평가">2. 속도 평가</h1>
<h2 id="fps-frames-per-second">FPS, Frames Per Second</h2>
<p>초당 처리할 수 있는 Frame의 수입니다. 크면 클수록 속도가 빠르다는 것입니다. </p>
<h2 id="flops-floating-point-operations">FLOPs, Floating Point Operations</h2>
<p>FLOPs 값은 작을수록 속도가 빠르다는 것이며, 연산량 횟수를 나타내는 값입니다. </p>
]]></description>
        </item>
    </channel>
</rss>