제가 다시 보려고 인덱싱하고 갑니다 좋은 영상 정말 감사합니다 11:50 차원내리기(3차원 공간 -> 2차원 공간으로 차원 낮춤) 14:00 시그마 (수식으로 적으면 14:17) 18:00 U,V 계산법 20:50 SVD의 목적 : 정보량(시그마=스칼라값)의 크기에 따라 A를 여러 레이어로 쪼개준다
정말 잘봤습니다. 마지막에 이미지에다가 적용했는데 제가 이해한 바로는 처음에 즉 레이어들이 적을때는 그냥 모자를 쓴 여자구나 정도 파악할수 있었는데 즉 저상태의 레이어들이 정보량이 많다고 이해했습니다. 일단 모자를 구성하는 요소들은 사실 매우많습니다 깃털부터해서 모자를 두르고 있는띠까지 하지만 일단 "저게 모자다!" 라는것을 기본적으로 표현해주는 레이어가 정보량이 많은레이어인거고, 레이어들이 많아질수록(쪼개질수록) 각레이어마다 정보량이 적어지지만 세세한걸 표현할수있는거죠. 저는 그래서 처음 레이어가 3개일땐 모자 여자 그리고 배경정도? 이렇게 단순하지만 각레이어들의 정보량이 많은거고, 레이어수가 많아질수록 모자, 모자를두른 띠, 모자주위의 깃털, 여자 화장의 정도, 등등 수많은 세부정보를 각레이어들이 정보량은 적지만 표현해주는거죠. 저는 이렇게 이해했습니다. 따라서 정보량이 많은 적은수의 레이어들만 가져온다면 저화질이고, 그리고 세세한 정보가 아닌 큰정보 즉 "모자를쓴 여자다" 라는 정보만 표현해주는거죠. 제가 이해한방법이 맞는진 모르겠지만 영상 매우잘봤습니다. 감사합니다.
파이썬 하지만 너무나 잘듣고있습니다. 5월1일 행렬도 모르고 시작한 32살인데 오늘 회귀분석 끝내고 머신러닝 들어갑니다.... 고등수학까진 2주만에 어찌 햇는데... 인강에서도 다 걍 넘어가버려서 정말 힘들었는데 선생님 강의덕에 ㅠㅠ 이해 합니다.... 감사합니다 ㅠㅠ pca를 이해하다니 넘 감격이에요
음.. 제가 이해하기로는 일단, A 행렬이 mxn 이라고 했을 때, 20:03에서 보시는 것과 같이 A라는 행렬을 SVD하면, A와 차원이 같은 mxn행렬 여러개로 쪼갤 수 있는 것을 볼 수 있을 거에요. 이때 각 쪼개진 행렬들에 scaling factor(sigma 요소)들이 곱해지고, 이러한 쪼개진 행렬이 더해져서 A를 표현하는 것을 보실 수 있습니다. 제가 이해하기로는 이 부분이 의미하는 것은 각 쪼개진 행렬들이 "A를 표현하는데 얼만큼의 기여"를 하고 있는지가 scailing factor로 나타내어 진다는 것입니다. 이 부분을 공돌님께서 22:30에서 이미지 파일로 예를 들어주셨는데요, 이미지 파일은 matlab으로 실행시켜보면 512 x 512 행렬로 표현되고 여기서는 이 이미지 행렬이 A라는 행렬로 생각할 수 있겠죠. 따라서 이 행렬을 SVD하면 마찬가지로 여러개의 512x512 행렬로 쪼개지는데, 이 쪼개진 행렬은 각각의 scailing factor로 곱해져있고, 쪼개진 행렬을 더하는 숫자가 많아질수록 원래의 행렬 A와 점점 같아지는 것을 보실 수 있습니다. 따라서, singular value가 크다는 말은 원래 행렬 A에 대한 정보량이 많다는 의미로도 해석할 수 있을 것 같아요!
안녕하세요 공돌이님 임의의 행렬 A(3×3)를 가지고 선형변환을 해준 직교(각 열 벡터 크기는 1)행렬v 그리고 결과로 나온 직교(각 열 벡터 크기는1)행렬 u는 유일하게 한쌍만 나오는 건가요? 즉 선형변환 A에 대하여 변환 전후의 직교성이 변하지 않는 벡터들의 모임인 u와 v는 하나씩이다가 맞나요?
설명중에 직교 기저벡터 셋을 기저벡터셋으로 보낸다는 것은 알겠는데 그 성질이 왜 중요한지에 대한 내용이 동영상에서 언급이 안된 것 같습니다. 제가 이해하는 것은 원 벡터공간에서 입력벡터를 v 로 상분분해한 다음 단순히 상수를 곱하고 즉 고유치를 곱하듯이 한다음 기저백테 변롼을 하는 방식으로 변환 A를 표현하는 것이라고 이해를 하고 있습니니다.
공돌님 진짜 명강의세요!! 질문이 하나 있습니다! U 와 V는 고유벡터 순서 그대로 사용하는데 Sigma는 고윳값을 내림차순으로 정렬하여 사용하는 배경이 어떻게 되나요? SVD로 분해된 U, V의 각 원소 벡터들은 가중치가(?) 동일하다는 가정이 있어야 임의순서대로 구해진 Sigma 값을 내림차순 정렬하여 사용해도 될 것 같다는 생각이 듭니다.
@@AngeloYeo 아하!!!! 결국 U, V 도 각 A.A^T, A^T.A 의 고유벡터니까 크기는 1로 동일하고 방향만 갖는 거네요! 고유벡터가 결국은 방향은 유지되고 길이만 변화하는 벡터니까 "가중치가 동일하다"는 말이 틀린 말은 아니겠네요. 갑자기 퍼즐처럼 맞춰지면서 이해가 쏙쏙 되었습니다! 공돌님 덕분에 선형대수 흥미 붙어서 재미있게 공부하고 있습니다. 어떤 자료들보다 더 쉽고 간결하게 풀어 설명해주시는 능력이 탁월하신 것 같습니다. 영상 하나하나 곱씹어보고 여러번 돌려보면서 정성이 많이 들어간 영상이라는 게 많이 느껴집니다. 진심으로 감사드리며, 2021년 새해 복 많이 받으세요!
질문이 있는데요. A=USV에서 S 안에 있는 값은 클수록 영향력이 더 크다고 볼 수 있는 것 같은데요. 맞나요? 만약, 가중치가 큰 것부터 상위 n개의 Layer만 적용하고 싶다면, S의 가장 큰 값을 써야 하는지 아니면 S에서 첫 번째(1,1)가 가장 큰 영향력이 있는지 궁금합니다. (선형대수 초보입니다;;)
안녕하세요. 좋은 질문 감사합니다. 1. 맞습니다. A=USV^T에서 S안에 있는 값은 클 수록 영향력이 크다라고 볼 수 있습니다. 2. S의 가장 큰 값부터 순서대로 쓰면 됩니다. 그런데, 보통은 S내의 대각선 상에 sigma 값이 큰 순서대로 놓일 수 있기 원소의 순서를 정렬해주는 것이 관례(?)입니다. (물론 그에 따라 U, V^T의 열(column)들도 그 순서에 맞게 정렬되어야 겠지요.) 그래서 MATLAB 같은 프로그램을 이용해서 SVD를 하면 S 행렬에 있는 sigma 값은 값이 큰 순서대로 정렬되어서 결과를 얻어주기 때문에 가장 첫 번째(그러니까, 말씀하신 (1,1))의 값부터 사용해주면 됩니다.
감사합니다 잘 듣고 있습니다. 제가 잘 몰라서 질문하나 드리겠습니다. 12분 40초 쯤에 3차원 벡터를 2차원 벡터로 선형변환하는 것이 있는데요.. 자료에 써주신 것은 3차원의 한 점을 2차원의 한 점으로 투영시키는 식이 아닌지 질문드립니다. 특이값 분해를 만족시키는 관점에서는 A가 2x3 matrix이므로 v 행렬은 3차원 직교행렬은 3x3으로 표현되고 결과인 u행렬은 2x3 matrix를 2x2 직교벡터와 2x3 sigma 벡터로 나누는 것이 아닌지요?
감사합니다. 옛날 영상이라 댓글을 달아주실련지는 모르겠지만 질문이 있어서 남겨봐요. Scaling factor, 즉 정보량의 크기에 따라서 A라는 matrix가 재정렬 된다라고 이해햇을때, 시그마1, 시그마2, ,,,시그마 n 까지의 순서는 크기 순서대로 정리가 되는건가요 ? 그래야 나중에 사진예시를 보여주셨을때, 초반 50번까지의 합으로만으로 선명한 이미지가 나오는반면, 그 이후의 합(정보량의 크기)가 미미해서 큰 변화가 없나 싶어, 제가 이해한바가 맞나 여쭈어봅니다.
음.. 공돌님 궁금한게 있습니다. 우선, 행렬 곱을 바라보는 시각이 총 4개가 있다고 알고 있습니다. 1) 행벡터와 열벡터의 내적 2) 열벡터의 선형 조합 3) 행벡터의 선형 조합 4) 열벡터와 행벡터의 곱이 모두 더해진 형태로 말이죠. 근데 SVD의 경우에는 20:03에서 표현하신 것과 같이 4)의 관점으로 행렬 곱을 생각해볼 수 있는 것 같아요. 근데 이 부분이 뭔가 직관적으로 탁 받아들여지지가 않습니다. 음.. 궁금한 부분을 좀 더 자세히 말씀드리기 위해 부연 설명을 하자면, A행렬이 mxn이라고 했을 때, V행렬을 자세히 생각해보면, R^n공간에 있기 때문에 행렬 A의 행벡터와 영벡터로 이루어진 공간상의 직교하는 기저벡터들로 이루어진 행렬이라고 생각할 수 있을 것 같습니다. 마찬가지의 방법으로 U행렬은 행렬 A의 열벡터와 Left Null space로 이루어진 R^m공간상의 직교하는 기저벡터들로 이루어진 행렬이라고 생각할 수 있을 거구요. 그러면 u1*v1'를 통해 계산되는 행렬은 R^n 공간상의 한개의 기저벡터와 R^m 공간상의 한개의 기저벡터를 통해 생성되는 행렬을 의미하는데, 이게 기하학적으로 어떤 의미인지 잘 모르겠습니다. 혹시 이 부분을 뭔가 기하학적으로 해석하는 방법이 있을까요?
안녕하세요. 행렬에 대해 굉장히 잘 이해하고 계신 분이신것 같네요. 어떤 행렬을 그림이라고 본다면, u1*v1'은 레이어 하나라고 볼 수 있지 않을까요? 포토샵에서의 레이어 말이죠. 여기서 sigma1 은 그 레이어의 중요도? 불투명도? 정도로 해석해도 괜찮지 않을까요? 혹시 더 기하학적으로 해석한다는 것이 어떤 것인지 ... 아이디어가 더 떠오르지 않습니다 ㅠㅜ
@@AngeloYeo 으음.. 예를들어 행렬의 곱셈을 열벡터의 선형 조합으로 본다는 말은 열벡터들로 이루어진 벡터 스페이스를 스팬 한다고 생각할 수 있어서 만약 A행렬의 rank가 r이라면 R^r 공간을 스팬한다고 생각해볼 수 있는데, u1*v1'는 R^m 공간상의 한 기저벡터와 R^n 공간상의 한 기저벡터를 통해 생성되는 mxn행렬인데, u1과 v1이 각각 열공간, 행공간에 있는 벡터라면 이때 이 열벡터와 행벡터의 곱을 생각해볼때 기하학적으로 또는 어떤 개념적으로 생각해볼 수 있는 해석이 있나 해서요ㅠ 음.. 뭔가 mxn차원을 생성하는 것을 상상해볼 수 있을 거 같기두 하구요.. 네넵 공돌님이 말씀해주신 부분을 잘 이해했습니다ㅎㅎ 감사합니다ㅎㅎ
고윳값 분해는 그람슈미트 직교화와 상관 없구요. 특이값 분해와 관련해서는 약간의 연관성이 있을 수 있습니다. 조금 복잡한 이야기이긴 한데, 영상에서는 많은 부분이 생략되어 있는데 그 부분에 대한 얘기를 조금만 하자면... row space 내에서 직교하는 벡터 집합을 찾을 때 그람 슈미트 직교화 과정이 쓰일 수 있습니다. 그리고 null space는 row space와 직교하기 때문에 앞서 찾았던 row space 내의 직교 벡터 집합과 null space의 벡터들을 column space로 mapping 시켰을 때 모두 직교하는지 보는 것이 "조금 어려운 말로 설명한" 특이값 분해라고 할 수 있습니다. 그리고 null space에서 mapping 된 벡터들의 특이값은 모두 0이 되면서 0으로 mapping 되겠지요
@@AngeloYeo 설명을 들으니 특이값 분해 속에 자연스럽게 녹아 들어가 있는 어떤 개념이라는 생각이 듭니다 무리하게 관련지으려는 압박감에서 해방된 것같고 시간이 지나 실력이 향상되면 자연스레 친밀해 질 것 같습니다 공돌이님 동영상은 동영상에서 배우는 것뿐만 아니라 계속 스스로 찾아서 공부하게 자극하는 자극제로서의 힘까지 있는 것같습니다 보통 질문을 하나 하려고 하면 (도대체 답이 언제 올까 ?) 하는 기다림의 답답함 때문에 질문을 안 하게 되는데 항상 짧은 기간 안에 답 해 주셔서 갑갑함이 금방 해소가 되기를 여러번 정말 감사합니다 ^^ ~~~
설명이 아주 좋고 준비를 많이 하신 게 보이네요. 그런데 그림 예시에서는 이미지 원본이 A라고 하면 A를 저장하지 않고 singular value만 저장해도 된다는 뜻인가요? 이 부분이 좀 이해가 안되네요. 다른 행렬이지만 같은 singular value를 가질 수도 있을 텐데 말이죠
안녕하세요. 우선 칭찬의 코멘트 감사드립니다. 이미지를 SVD하는 부분에 있어서 제 설명이 부족했던 것 같습니다. singular value만 저장해도 된다는 뜻은 아니었구요. 조금 구구절절히 설명해보겠습니다... 예를들어서 A라는 image를 SVD했을 때, A = U S V' 와 같이 분해되겠습니다. (여기서 Sigma 행렬: S, V의 전치행렬: V'로 적겠습니다. 또, A는 m x n 행렬이라고 생각하겠습니다. 논의를 간단하게 만들기 위해 m>=n이라고 하겠습니다. 또, 이에 따라 U는 m x m 행렬, S는 m x n 행렬, V'는 n x n 행렬이 되겠습니다.) 이 때, S는 대각행렬인데, 그 대각성분을 크기 순서대로 내림차순으로 s1, s2, s3, ... 과 같이 생각하겠습니다. 또, U의 첫 번째 열(column)성분을 U(:,1)과 같이 적겠습니다. (MATLAB의 표기와 동일) 그러면 A를 SVD로 분해한 U S V'는 다음과 같이 쪼개서 생각할 수 있습니다. A = s1* U(:,1) V(:,1)' + s2 U(:,2) V(:,2)' + ... +s i U(:,i) V(:,i)' + ... + s n U(:,n) V(:,n)' 여기서 위 식의 우항에서 사용자가 원하는 앞의 k개 까지만 행렬을 더해서 저장한면 이미지의 핵심 정보만을 저장하는 것과 같다는 의미였습니다... 웹상에 관련 내용을 설명하는 많은 그림이 있는데, 그림으로 나타낸 것 중 괜찮은 것은 www.researchgate.net/figure/Singular-value-decomposition-of-A-a-full-rank-r-b-rank-k-approximation_fig1_271076899 인 것 같습니다. 확인부탁드리고 더 궁금하신 점 있으시면 말씀해주세요. 감사합니다.
영상 너무 잘 봤습니다! SVD를 그냥 차원 축소 기법이라고만 대충 알고 있었는데, 깊게 이해시켜주신 점에 감사드립니다! 다만 한 가지 질문이 있는데요! 1. 원본행렬 A를 SVD로 분할하면 U, Σ, V^T 행렬 3개로 분할되고 여기서 Σ 행렬의 diagonal 위치 값에 선형변환을 취해주면서 바뀐 벡터의 '크기' 값이 들어가 있잖아요!? 제가 다른 책에서 이 Σ 행렬의 diagonal 위치 즉, 왼쪽 위에 있는 '크기'값일 수록 중요도가 높은 값들이 위치하고 오른쪽 아래에 있는 '크기' 값일 수록 중요도가 낮은 값이 들어있다라고 보았는데, 여기서 '중요도가 높은 값' 이라는게 그러면 '크기가 큰 값'을 의미하는건가요? 2. (1번 질문에 제가 질문한 부분이 맞다면) 그렇다면 '크기' 값이 담긴 Σ 행렬에서 왜 항상 왼쪽 위로 갈수록 중요도가 높은(크기 값이 큰) 값이 들어가 있는 건가요? 좋은 영상 다시 한 번 감사합니다 :)
저 m by n인 A 행렬이 있다고 했을 때 이에 따라 U : m x m , D : m x n, V^T : n x n 의 형태가 되잖아요. 이때 m > n이면 D의 열 i 중 i>n인 부분은 모두 0 이 되니까 V의 i>n인 행 (i번째 벡터)들은 정보량이 없기 때문에 무시된다 라고 이해해도 될까요??
@@AngeloYeo 그런데 제가 부족하여 잘 이해가 되지 않는 부분이 있는데,, 특이값 분해의 의미를 풀이해주시면서 [v1 v2] 라는 원본 직교 행렬에 대해서 A라는 선형 변환을 가해줬을 때...라는 표현을 사용해주셨느데 그럼 2차원 영상 A를 SVD의 대상으로 했다면 영상 자체를 선형변환 인자로 가정했다는 결과로 생각할 수 있나요?
@@lush8515 네 맞습니다. 영상도 일종의 행렬로 생각할 수 있습니다. 행렬은 선형변환 가능한 요소이구요 ^^ 제 영상 마지막 부분에는 사진을 SVD로 분해한 사용 예시가 있으니 확인해보시면 좋을 것 같습니다. 제 블로그에도 SVD를 이용해 사진을 SVD 분해한 예시가 있으니 확인해보실 수 있습니다. angeloyeo.github.io/2019/08/01/SVD.html#%ED%8A%B9%EC%9D%B4%EA%B0%92-%EB%B6%84%ED%95%B4%EC%9D%98-%ED%99%9C%EC%9A%A9