<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>기록장</title>
        <link>https://velog.io/</link>
        <description>ML, DL 공부하는 사람</description>
        <lastBuildDate>Thu, 17 Nov 2022 08:54:38 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>기록장</title>
            <url>https://velog.velcdn.com/images/walker_0/profile/6e887c3d-a4a4-4d73-a5d2-005928a3e385/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 기록장. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/walker_0" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[논문] 3DCrowdNet]]></title>
            <link>https://velog.io/@walker_0/%EB%85%BC%EB%AC%B8%EC%A0%95%EB%A6%AC-3DCrowdNet</link>
            <guid>https://velog.io/@walker_0/%EB%85%BC%EB%AC%B8%EC%A0%95%EB%A6%AC-3DCrowdNet</guid>
            <pubDate>Thu, 17 Nov 2022 08:54:38 GMT</pubDate>
            <description><![CDATA[<h1 id="분야">분야</h1>
<p> 이 논문은 Monocular image에서 3d mesh(pose)를 estimate하는 분야의 논문입니다.</p>
<h1 id="문제-제기">문제 제기</h1>
<p> 이 논문에서는 3d human pose estimation을 하는 기존의 방법의 문제점을 제기하면서 시작합니다. 3D human mesh estimation 분야는 많은 발전이 있었으나 사람들이 많이 모여있는(crowded) 상황에서는 고전을 면치 못하고 있습니다. 이 논문에서 주장하는 이러한 실패의 이유는 다음과 같습니다.</p>
<h2 id="첫번째-이유-domain-gap">첫번째 이유: Domain Gap</h2>
<p> 이 논문에서 crowded scene에서의 estimation을 실패하는 이유중 하나로 지목한 것은 training set과 test set사이의 domain gap입니다. Train 하는데 사용된 데이터셋 중 하나인 MoCap dataset은 motion capture를 하여 만든 데이터셋으로 train을 위한 3d label이 잘 주어져 있습니다. Motion capture 방식의 특성상 crowded한 상황을 만들어내는 것이 어렵고 그렇기 때문에 실제 테스트 환경에서의 사람들의 분포정도가 다릅니다. 그렇기 때문에 crowded scene에서의 feature을 적절히 뽑아내지 못한다고 이 논문에서 주장합니다.</p>
<h2 id="두-번째-이유-feature-processing-하는-방법의-문제">두 번째 이유: Feature processing 하는 방법의 문제</h2>
<p> Localized된 bounding box들에 대하여 기존에 deep-CNN 구조를 가지는 feature extractor를 사용하여 feature들을 뽑아냈는데, 이러한 feature extractor는 마지막에 global average pooling을 이용합니다. 이러한 구조는 spatial information의 collapse를 일어나게 하고 그로 인해 target 사람의 feature와 non-target를 구별하지 못하게 만드는 문제를 발생시킵니다. Crowded scene에는 여러 사람이 겹치는 경우가 빈번하게 발생하고 아무리 bounding box를 정밀하게 조정한다고 해도 여러 사람이 겹치는 bounding box가 생길 수 밖에 없습니다.(Bounding box는 원래 사람마다 한개씩 assign이 되도록 하는게 원래 의도) 그러면 non target feature도 같이 추출이 되는데, global average pooling으로 인해 target feature와 함께 non target feature도 같이 평균으로 계산되어 영향을 주게 됩니다. </p>
<h1 id="해결방법">해결방법</h1>
<h2 id="domain-gap에-대한-해결방안">Domain Gap에 대한 해결방안</h2>
<p> Domain Gap이 생기는 이유는 MoCap 같은 dataset은 3d labeling이 되어있고 croded scene이 많지 않지만, 실제 데이터들은 3d label이 없을 뿐더러 crowded scene들도 빈번하게 등장합니다. 그래서 이를 해결하기 위해 논문의 저자들은 &quot;2d pose estimator&quot;를 사용하여 feature를 추출합니다. Feature extractor로 2d pose estimator를 사용하였기 때문에, 3d labeling이 되어있지 않은 실제 환경에서의 데이터 환경에서 크게 영향받지 않고 유의미한 feature를 뽑아낼 수 있습니다. 또한 2d pose esitmator는 MoCap 같은 3d labeled dataset으로 학습된 것이 아니기 때문에, 실제 테스트 환경과 더 유사한 환경에서 학습된 것이 이러한 domain gap을 줄였다고 주장합니다.</p>
<h2 id="spatial-feature-collapsing에-대한-해결방안">Spatial feature collapsing에 대한 해결방안</h2>
<p> 단순히 Deep-CNN 기반의 feature extractor만을 사용하는 것이 아닌 joint-based regressor를 이용하여 이 문제를 해결했다고 주장합니다. Joint-based regressor는 말 그래도 image에 있는 사람의 joint(관절)를 기반으로 feature를 추출하는 모델입니다. Joint-based regressor로 우선 joints들의 spatial locations을 예측하고 images에 있는 feature를 deep-CNN 기반의 extractor를 이용해서 뽑아낼 때, joint의 위치를 참고하여 추출하는 것입니다. 이를 이용하여 spatial feature를 유지하면서 pose estimation을 가능하게 한다고 논문의 저자들은 주장합니다.</p>
<h1 id="모델-overview">모델 overview</h1>
<h2 id="전반적인-pipline에-대한-설명">전반적인 pipline에 대한 설명</h2>
<p><img src="https://velog.velcdn.com/images/walker_0/post/097bfc10-c30c-4fe6-85e7-835f6e61b1cf/image.png" alt=""></p>
<p>[출처: 3dcrowdnet 논문 figure 2]</p>
<p> 3DCrowdNet은 input에서 사람이 있는 영역의 bounding box들을 잡고(가능한 작게 잡습니다) 이들을 crop합니다. Cropped된 이미지와 cropped된 이미지를 가지고 2d joints를 예측한 joints map이 이 모델의 input이 됩니다.</p>
<p> Cropped image를 가지고 early image feature를 backbone(논문에서는 Resnet-50 사용)으로 뽑아냅니다.  그리고 joint map(그림에서는 2D pose $\textrm{P}^{2D}$)을 가지고 2d gaussian heatmap을 만들어 냅니다.
 위에서의 early image feature와 joint heatmap을 concat하여 이를 resnet 기반 backbone으로 feature extraction을 합니다. 논문에서 주장한 바에 따르면 joint를 가지고 feature extraction을 했기 때문에, spatial information이 무너지지 않고 유지될 수 있습니다. 이렇게 뽑아낸 feature를 <strong>pose guided image feature</strong>라고 부릅니다.
 이러한 pose guided image feature를 가지고 position network를 이용해 3d joint image와 3d joint score를 계산합니다.
 그 후 pose guided image featue, joint coord, joint score를 가지고 모델 파라미터들을 추정합니다. 이를 추정하는데에는 rotation network를 이용합니다. 이들은 SMPL 모델의 pose와 shape parameter, camera parameter, pose의 rotation에 대한 parameter들 입니다. 그렇게 추정한 parameter를 가지고 SMPL모델로 최종 human pose를 inference 합니다. 여기서 rotation network으로 뽑아낸 pose param을 다시 한번 vposer에 forward한 결과에 root pose를 concat하여 pose param을 예측합니다.</p>
<h2 id="position-network">Position network</h2>
<p>  position network란 pose guided image feature를 가지고 3d joint image와 3d joint score를 예측하는 네트워크 입니다. 우선 input으로 들어온 pose guided image feature를 convolution layer를 통과시켜 3d joint heatmap을 만들고 이를 soft argmax 3d를 적용하여 heatmap의 peek가 나오게 하는 좌표값 즉 3d joint coordinate를 추정합니다. 또한 joint heatmap을 가지고 joint score를 계산하는데(아마 inference한 joint들에 대한 평가 점수 정도 되지 않을까 생각합니다. 오피셜 아님) 그리고 구한 joint coordinate들과 joint score를 return 합니다.</p>
<h2 id="rotation-network">Rotation network</h2>
<p>   Rotation network는 pose guided image feature, joint coordinate 그리고 joint score를 가지고 root pose, SMPL pose parameter, SMPL shape parameter, camera parameter를 추정하는 네트워크입니다.
   pose guided image feature와 joint coordinate를 가지고 joint feature를 뽑아내고, 이들과 joint coordinate, joint score를 가지고 최종 feature를 만들고 이 feature를 residual graph convolution network를 여러겹 쌓아서 만든 네트워크를 통과시켜 feature를 update합니다. update된 feature를 slicing 하여 root pose, pose param, shape param, cam param을 return 합니다.</p>
<h1 id="네트워크-학습">네트워크 학습</h1>
<h2 id="loss-function">loss function</h2>
<p>$$
L = L_{\textrm{pose}} + L_{\textrm{mesh}}  \
L_{\textrm{mesh}} = L_{\textrm{param}} + L_{\textrm{pose}\prime}
$$</p>
<p>최종 loss는 pose에 대한 loss와 mesh에 대한 loss로 이루어집니다. 여기서 mesh에 대한 loss란 global rotation parameter($\theta^{g}$), 예측한 pose parameter($\theta$), shape parameter($\beta$)와 pseudo-GT parameter에 대한 $\textrm{L}1$ distance($L_{\textrm{param}}$)와 predicted mesh들과 regressed된 joints들 간의 $\textrm{L}1$ distance($L_{\textrm{pose}\prime}$)입니다. 그리고 pose에 대한 loss란 joint에 대한 pseudo GT와 예측한 joint들의 좌표들의 L1 distance 입니다. 2D anootions들로 supervised training을 하기 위해 camera parameter $k$를 가지고 projection 과정을 거쳐서 학습합니다. Pseudo GT는 선행논문 <em>(Gyeongsik Moon and Kyoung Mu Lee. NeuralAnnot: Neural annotator for in-the-wild expressive 3D human pose and mesh training sets. arXiv preprint arXiv:2011.11232, 2020)</em>와 <em>(Georgios Pavlakos, Vasileios Choutas, Nima Ghorbani, Timo Bolkart, Ahmed AA Osman, Dimitrios Tzionas, and Michael J Black. Expressive body capture: 3D hands, face, and body from a single image. In CVPR, 2019)</em>를 이용하여 구한 값입니다.(추후에 읽어보고 공부할 예정)</p>
<h1 id="성능-평가">성능 평가</h1>
<h2 id="mpjpe-pa-mpjpe">MPJPE, PA-MPJPE</h2>
<p> MPJPE는 <strong>Mean Per Joint Position Error</strong>의 줄임말로 말 그대로 joint 위치당 평균 오차입니다.
 PA-MPJPE는 Procrustes analysis를 추정된 joint와 GT joint에 적용한 후 이에 대한 MPJPE를 구한 것입니다.
 결국 MPJPE, PA-MPJPE는 GT와 prediction간에 자세가 얼마나 유사한지를 나타내는 척도이다. 이 값들이 작을수록 GT와 자세(pose)가 유사하다는 의미입니다.</p>
<h2 id="mpvpe">MPVPE</h2>
<p>  MPVPE는 <strong>Mean Per Vertex Position Error</strong>의 줄임말로, GT를 이루는 mesh들의 vertex의 position과 추정한 mesh의 vertex들의 평균 오차를 뜻합니다.</p>
<p>예상할 수 있겠지만 MPJPE, PA-MPJPE, MPVPE가 다른 모델보다 더 좋다는것이 결론입니다.</p>
<p>그 외에도 저자들은 모델을 구성하는 구성요소중 어떠한 부분을 제거할 때 성능에 어떤 영향을 미치는지에 대한 ablation study도 진행하였습니다. 그랬을때도 다른 모델보다 성능이 좋다는 결과가 나왔습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[선형대수 심화] 선형변환과 행렬의 관계]]></title>
            <link>https://velog.io/@walker_0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-%EC%8B%AC%ED%99%94-%EC%84%A0%ED%98%95%EB%B3%80%ED%99%98%EA%B3%BC-%ED%96%89%EB%A0%AC%EC%9D%98-%EA%B4%80%EA%B3%84</link>
            <guid>https://velog.io/@walker_0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-%EC%8B%AC%ED%99%94-%EC%84%A0%ED%98%95%EB%B3%80%ED%99%98%EA%B3%BC-%ED%96%89%EB%A0%AC%EC%9D%98-%EA%B4%80%EA%B3%84</guid>
            <pubDate>Tue, 04 Oct 2022 12:13:00 GMT</pubDate>
            <description><![CDATA[<h1 id="선형변환과-행렬의-관계-중요">선형변환과 행렬의 관계 (중요)</h1>
<p>이 포스트에서는 행렬의 정체에 대하여 배우게 됩니다. 행렬과 선형변환이 본질적으로 같은 대상이었다는 것을 다음 내용을 통해 배우게 됩니다.</p>
<h2 id="정리">정리</h2>
<p>$V, W$를 field $F$ 위에서의 유한차원 벡터공간(F.D.V.S.)라 하고, $\dim V = n, \dim W = m$이라 합시다. 그리고 각 벡터공간에 대한 basis(기저) 중 하나를 고르고 이것들을 각각 $B_{V} := { v_1, \cdots, v_n}$, $B_{W} := { w_1, \cdots, w_m}$이라 합시다. 이때 다음 함수는 일대일 대응입니다.
$$
M_{_}(B_{V}, B_{W}): \mathcal{L}(V, W) \rightarrow \mathcal{M}(m, n)
$$
여기서 $\mathcal{L}(V, W)$는 $V$에서 $W$로 가는 모든 선형변환의 집합이고 $\mathcal{M}(m,n)$은 field $F$에서의 모든 m x n 행렬들의 집합입니다. 즉 어떤 m x n 행렬을 잡으면 그 행렬에 대응하는 선형변환을 찾을 수 있고, 어떤 선형변환을 찾으면 그 선형변환에 대한 행렬을 반드시 찾을 수 있습니다. (주의, 기저가 이미 정해졌고 고정되었다는 사실을 잊으면 안됨)</p>
<h2 id="증명">증명</h2>
<p>어떤 선형변환이 주어졌을 때, 이에 대응하는 행렬을 찾는 것은 쉬운 일입니다. 왜냐하면 선형변환의 공역의 기저에 대한 정의역의 기저의 좌표를 열벡터로 하는 행렬을 찾게 된다면 그 행렬은 유일하게 결정되기 때문입니다. 그 이유는 특정 기저에 대한 좌표의 표현은 유일하기 때문입니다. 문제는 어떤 행렬이 주어졌을 때, 거꾸로 그 행렬에 대응하는 선형변환을 찾는 일입니다.
 주어진 정보를 요약하면 (1) 벡터공간 V, W가 주어짐, (2) 그 벡터공간의 차원을 알고 있음, (3)각 벡터공간의 기저들은 이미 구해놓음, (4) $V$의 차원이 행의 개수고 $W$의 차원이 열의 개수인 행렬이 주어짐
 여기에서 (4)에 해당하는 행렬에 유일하게 대응하는 선형변환을 찾는 것이 목표입니다.
 어떤 선형변환을 찾는다는 것은 정의역에 해당하는 벡터공간의 기저들의 공역으로의 mapping을 찾는 것과 같습니다. 왜냐하면 기저만으로 다른 원소의 mapping이 결정되기 때문입니다. 이는 기저의 정의역 원소의 표현이 항상가능하며 이들의 선형적인 성질을 선형변환이 공역으로 보존하면서 mapping하기 때문입니다.</p>
<blockquote>
<p>요약 : &quot;어떤 선형변환을 찾는다&quot;는 것은 &quot;기저의 원소가 어느 곳으로 대응되는지를 찾는것&quot;으로 충분하다.</p>
</blockquote>
<p> 이 사실을 이용하여 $V$의 기저에서 $W$로 대응하는 다음과 같은 함수를 생각해봅시다.(여기서 기저의 원소들은 ordered되어있다고 생각합니다=ordered set)</p>
<p> $$
 E^{i, j} (v_{p}) = \begin{cases} w_j \  (p = i) \
                                     \bold{0}<em>{W} \ (p \neq i)
 \end{cases}
 $$
 이와 같이 선형변환을 정의하는 이유는 행렬의 (i, j) index를 반영하여 선형변환을 만들기 위해서입니다. 위의 선형변환의 위 첨자 중 처음 나오는 숫자는 $V$의 기저의 원소와 순서가 같으면 이를 다음 첨자에 순서에 대응하는 $W$의 기저의 원소로 대응하고 나머지 원소는 전부 $W$에서의 영벡터로 대응시키는 함수입니다.
  주어진 행렬의 (i, j)-th element를 $a</em>{ij} \in F$라고 한다면 다음 과 같은 선형변환을 정의할 수 있습니다.
  $$
  E := \sum_{1 \leq j \leq n, 1 \leq i \leq m} a_{ij} E^{i, j}
  $$</p>
<p> 행렬의 각 원소들이 이 함수에 어떤 기여를 하는지 살펴봅시다. 우선 $E^{i, j}$를 행렬의 원소 관점에서 이해할 수 있는데, $E^{i, j}$는 $V$의 i번째 기저벡터 $v_i$를 $W$의 j번째 기저벡터 $w_j$로 mapping 하는 함수입니다. 이러한 $E^{i, j}$를 모두 더한 함수도 선형 변환인데, 이를 그냥 더하는 것이 아닌 행렬의 (i, j)원소와 곱한 함수를 더한 함수를 만들겠다는 의미입니다. 선형변환의 스칼라 배 후 합도 마찬가지로 선형변환이므로 $E$도 선형변환입니다. 즉 행렬에 대응되는 선형변환 $E$를 찾았습니다. (증명끝)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[선형대수 심화] 선형변환]]></title>
            <link>https://velog.io/@walker_0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-%EC%8B%AC%ED%99%94-%EC%84%A0%ED%98%95%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@walker_0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-%EC%8B%AC%ED%99%94-%EC%84%A0%ED%98%95%EB%B3%80%ED%99%98</guid>
            <pubDate>Tue, 04 Oct 2022 10:57:49 GMT</pubDate>
            <description><![CDATA[<h1 id="선형변환이란">선형변환이란?</h1>
<p>선형대수학에서 선형변환(Linear transformation)은 두 개의 벡터 공간에 대하여 선형성(linearity)를 만족하는 함수를 의미합니다. 여기서 선형성이란 어떤 함수 $T(u+av) = T(u)+aT(v)$를 만족하는 함수를 의미합니다.</p>
<h2 id="여러가지-선형변환의-예시">여러가지 선형변환의 예시</h2>
<p>$F$가 field이고, $V, W$가 벡터공간이라고 할때 다음의 변환들은 전부 선형변환입니다.</p>
<p>(1) <strong>zero map</strong> $\bold{0} = \bold{0}<em>{V \rightarrow W} : V \rightarrow W, \bold{v} \mapsto \bold{0}</em>{W}$
(2) <strong>identity map</strong> $I = I_{V} : V \rightarrow V, \bold{v} \mapsto \bold{v}$
(3) <strong>derivation map</strong> $D : F \left [ x\right] \rightarrow F \left [x \right], a_{0} + a_{1} x + \cdots + a_{n} x^{n} \mapsto a_{1} + 2a_{2}x + \cdots + n a_{n}x^{n-1}$
(4) $W \subseteq V$가 부분공간일 때, <strong>inclusion map</strong>은, $\iota : W \hookrightarrow V, \bold{w} \mapsto \bold{w}$ <em>injective</em> 한 linear map 입니다.
(5) $V = X \oplus Y$이라면 $\bold{v} \in V$에 대하여 unique한 $\bold{v} = \bold{x} + \bold{y}$인 $\bold{x} \in X, \bold{y} \in Y$를 찾을 수 있습니다. 이러한 $\bold{v}, \bold{x}, \bold{y}$에 대하여 </p>
<p>$$
\pi_{X} : V \rightarrow X, \bold{v} \mapsto \bold{x}
$$
를 <strong>projection map</strong>이라고 하고 선형변환입니다.
(6) $W$를 $V$의 부분공간이라고 할 때, $\bold{v}, \bold{u} \in V$가 $W$를 법으로 하여($W$의 관점에서) <strong>합동(congruent)</strong> 이다는 것은 $\bold{u} - \bold{v} \in W$인 것이고 다음과 같이 표기합니다. (v is congruent to u modulo W 라고 읽습니다.)
$$
\bold{v} \equiv \bold{u} (\textrm{mod} \ W)
$$
&quot;~와 합동이다&quot;는 그렇기 때문에 동치관계가 된다. $\bold{v} \in V$에 대하여 <strong>coset of $\bold{v}$ modulo</strong> $W$라는 것은 $\bold{v}$의 equivalence class를 의미하며 다음과 같이 표기합니다.</p>
<p>$$
\bold{v} + W := { \bold{v} + \bold{w} \vert \bold{w} \in W }
$$</p>
<p>그리고 modulo $W$인 모든 coset들의 집합(set of all cosets modulo W)를 다음과 같이 표기합니다. </p>
<p>$$
V / W := { \bold{v} + W \vert \bold{v} \in V }
$$</p>
<p>$V/W$에서의 더하기와 스칼라 곱을 coset 표현법에서 왼쪽 원소에 대하여 elementwise하게 정의하면 well-defined이고 이 연산에 대하여 $V/W$는 벡터공간입니다. 이러한 벡터공간을 <strong>quotient space</strong> of $V$ modulo $W$라고 합니다. $V$에서 quotient space $V/W$로의 projection map</p>
<p>$$
\pi : V \rightarrow V/W, \bold{v} \mapsto \bold{v} + W
$$
는 선형변환입니다.</p>
<h1 id="선형변환과-basis">선형변환과 basis</h1>
<p>지금까지 배운 선형변환(linear map)은 두 벡터공간을 연결짓는 linear한 함수입니다. 그리고 벡터공간의 원소들은 basis의 원소들로 유일하게 표현이 가능합니다. 그렇다면 어떤 선형변환이 있을때, $V$에서 $W$로 가는 mapping을 표현하는데 $V$가 아니라 $V$의 basis로 충분하지 않을까요? 왜냐하면 어떤 벡터공간의 모든 원소는 basis의 linear combination으로 유일하게 표현되기 때문이죠. 위의 추측은 참이며 이를 수학적으로 나타내면 다음과 같습니다.</p>
<p>$V, W$를 field $F$위에서의 벡터공간이라고 합시다. 그리고 $B$를 $V$의 basis라고 한다면,  $V$에서 $W$로 가는 선형변환들의 집합과 $B$에서 $W$로 가는 함수의 집합으로 가는 일대일 대응이 존재합니다. 즉 다음과 같은 일대일 대응 $\varphi$ 가 반드시 존재합니다.
$$
\varphi : { \textrm{linear transformation T :} V \rightarrow W} \rightarrow {\textrm{function} f : B \rightarrow W}, \ T \mapsto T\vert_{B}
$$</p>
<p>$T$가 주어졌을때, $T\vert_{B}$는 $T$의 정의역을 제한시키면 되기 때문에 자명하게 선형변환을 찾으면 이에 대응되는 basis에서 출발하는 함수를 찾을 수 있습니다. 그럼 basis에 $W$로 가는 함수 $f$가 주어졌을 때 이에 대응되는 선형변환은 어떻게 찾을까요? 우선 우리가 찾아야 하는 선형변환은 $V$에서 출발하는 함수입니다. 그 말은 모든 $\bold{v} \in V$에 대하여 $W$의 원소로 가는 mapping을 찾으면 되고 이 mapping이 linear하면 됩니다. 그런데 $\bold{v} \in V$를 잡을 때 마다, basis의 원소를 이미 알고 있기 때문에 basis의 원소에 대한 linear combination을 구하는 것이 항상 가능해집니다. 즉 $B = { \bold{v}_1, \cdots, \bold{v}_n}$이라고 한다면 $\bold{v} =a_1 \bold{v}_1 + \cdots + a_n \bold{v}_n$인 $a_1, \cdots, a_n$이 반드시 존재하고 $T: V \rightarrow W$를 $\bold{v} \mapsto a_1 f(\bold{v_1}) + \cdots + a_n f(\bold{v}_n)$이라고 한다면 $T$는 선형변환이 되고 계수들은 basis의 성질에 의해 $\bold{v}$의 선택에 대하여 유일하게 결정됩니다. 그러므로 위의 주장이 맞는 주장이 됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[선형대수 심화] 부분공간]]></title>
            <link>https://velog.io/@walker_0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-%EC%8B%AC%ED%99%94-%EB%B6%80%EB%B6%84%EA%B3%B5%EA%B0%84</link>
            <guid>https://velog.io/@walker_0/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98-%EC%8B%AC%ED%99%94-%EB%B6%80%EB%B6%84%EA%B3%B5%EA%B0%84</guid>
            <pubDate>Tue, 04 Oct 2022 07:07:54 GMT</pubDate>
            <description><![CDATA[<h1 id="direct-product벡터공간의-곱">Direct Product(벡터공간의 곱)</h1>
<p>$V_1, \cdots , V_n$이 field $F$위에서의 벡터공간일 때, 
$$
V := \prod_{i=1}^{n} V_i = V_1 \times \cdots \times V_n
$$
으로 정의합시다. 이 때 $V$에서의 덧셈과 스칼라 곱을 elementwise하게 정의한다면 $V$는 field $F$에서의 벡터공간이 되고 벡터공간 $V$를 $V_1, \cdots V_n$들의 <strong>direct product</strong>라고 부릅니다.</p>
<h1 id="부분공간">부분공간</h1>
<p>선형대수에서 $W$가 어떤 field(체) $F$위에서 정의된 벡터공간 $V$의 부분공간이라는 것은 $V$의 부분집합이면서(공집합이 아닌) $W$가 체 $F$위에서의 벡터공간일 때를 의미합니다.</p>
<h2 id="부분-공간의-성질">부분 공간의 성질</h2>
<p>(1) Zero space와 자기 자신은 항상 부분공간이 되며 그렇기 때문에 이를 <em>trivial subspace</em>라고 부릅니다
(2) 어떤 벡터 공간의 한 원소에 스칼라배한 벡터들의 집합은 그 벡터공간의 부분공간입니다.
(3) $F$를 field 라고 할 때, $F^{n}$은 벡터 공간이고 $n$이하의 양의 정수 $k$에 대하여 $F^{k}$의 원소를 $n$차원으로 0으로 padding하여 얻은 벡터들로 이루어진 벡터공간은 $F^{n}$의 부분공간이 됩니다.
(4) 어떤 벡터공간 $V$의 부분공간들의 finite 혹은 infinite intersection은 $V$의 부분공간 입니다. (부분공간을 계속 교집합해도 항상 부분공간이 된다)</p>
<h2 id="부분공간들의-합">부분공간들의 합</h2>
<p>$V$를 field $F$위에서의 벡터공간이라고 합시다. $\mathcal{U}_1, \cdots \mathcal{U}_k$을 $V$의 유한개의 부분공간이라고 할 때, 이들의 합을 다음과 같이 정의합니다.</p>
<p>$$
\sum_{i=1}^{k} \mathcal{U}_i = \mathcal{U}_1 + \cdots + \mathcal{U}_k := \left { \bold{u}_1 + \cdots + \bold{u}_k \vert \bold{u}_1 \in \mathcal{U}_1, \cdots, \bold{u}_k \in \mathcal{U}_k  \right}
$$
이들은 $V$의 부분공간이 되며(쉽게 확인해볼 수 있음)
$$
\phi : \mathcal{U}_1 \times \cdots \times \mathcal{U}_k \rightarrow \mathcal{U}_1 + \cdots + \mathcal{U}_k, (\bold{u}_1, \cdots, \bold{u}_k) \mapsto \bold{u}_1 + \cdots + \bold{u}_k 
$$
는 surjective map입니다.</p>
<h1 id="direct-sum">Direct sum</h1>
<p>지금 까지 배운 것을 바탕으로 다음과 같은 3개의 문장이 동치라는 것을 보일 수 있습니다.</p>
<p>(1) $\phi$는 bijective 합니다.(일대일 대응입니다.)
(2) $\mathcal{U}<em>1 + \cdots + \mathcal{U}_k$의 모든 벡터들은 각각의 $\mathcal{U}_i$의 벡터들의 합으로 유일하게 표현됩니다. 이 말을 풀어서 설명하면 만약 $\bold{u} \in \mathcal{U}_1 + \cdots + \mathcal{U}_k$라면 $\bold{u} = \bold{u}_1 + \cdots + \bold{u}_k$인 $\bold{u}_1 \in \mathcal{U}_1, \cdots, \bold{u}_k \in \mathcal{U}_k$가 유일하게 존재한다는 것입니다.
(3) 모든 $1 \leq i \leq k$에 대하여 $\mathcal{U}_i \cap \left( \sum</em>{j \neq i}\mathcal{U}_j \right) = \bold{0}$입니다.</p>
<p>(1)이 성립하면서 $V = \mathcal{U}<em>1 + \cdots + \mathcal{U}_K$일 때, 
$$
V = \bigoplus</em>{i=1}^{k} \mathcal{U}_i = \mathcal{U}_1 \oplus \cdots \oplus \mathcal{U}_k
$$
라고 표기하고 $V$가 $\mathcal{U}_1, \cdots, \mathcal{U}_k$들의 <strong>direct sum</strong>이라고 말합니다.</p>
<h2 id="추가설명">추가설명</h2>
<p>(1), (2)가 동치인 것은 사실 어찌 보면 당연합니다. (1)의 bijectiveness를 풀어쓴게 (2)이기 때문입니다. (3)의 의미는 $V$를 $k$개의 부분공간 중 하나라도 빼먹는다면 각각의 부분공간의 합으로 $V$를 나타낼 수 없다는 의미가 됩니다. 왜냐하면 하나를 빼먹은 합의 부분공간과 빼먹은 공간의 교집합이 zero space이기 때문에 하나를 빼먹은 합공간의 원소로 표현할수 없는 $V$의 원소가 존재한다는 것을 의미하기 때문입니다.</p>
<h1 id="complement여공간">Complement(여공간)</h1>
<p>$V$를 field $F$위에서의 벡터공간이라고 하고 $\mathcal{U}$를 $V$의 부분공간이라고 합시다. 다음을 만족시키는 $V$의 부분공간 $W$가 존재하면 $W$를 $\mathcal{U}$의 부분공간 이라고 합니다.</p>
<p>$$
V = \mathcal{U} \oplus W
$$</p>
<p>즉 어떤 벡터공간을 두 벡터공간의 unique한 합으로 표현이 가능하다면 이들은 서로 complement관 계라고 말할수 있습니다.</p>
]]></description>
        </item>
    </channel>
</rss>