분류 전체보기 84

배열을 이용한 희소 행렬 표현 (Sparse matrices representations using Array)

아마 많은 프로그래밍을 배우는 학생들 중 행렬을 어떻게 저장하는가에 대한 고민을 안해본 사람도 있으실 것 같습니다. 파이썬에서 손 쉽게 행렬을 리스트나, 여러 자료구조로 다루지만 실제적으로 어떻게 저장해야 효율적인가? 는 이미 많이 최적화된 상태로 사용하고 있기 때문이죠. 그래도 행렬의 표현을 고민해보는 것은 자료구조를 이해하는데 있어 좋은 예제 중 하나입니다. 그 중에서도 희소 행렬(Sparse matrix)란 행렬의 원소 중에서 0인 값이 더 많은 행렬을 의미합니다. 이런 행렬은 추후 자연어처리 부분에서도 나타나기 때문에 어떻게 이를 안쓰고 효율적으로 모델링 할 수 있을까? 등 많이 고려되는 사항 중 하나입니다. 일반적으로 행렬은 $a[i][j]$ 와 같은 형태의 2차원 배열을 흔히 사용합니다. 그러..

배열을 이용한 다항식 ADT의 표현 (Polynomial ADT using Array) - 다항식의 덧셈과 곱셈

배열을 이용한 매우 기초적인 다항식의 ADT 구현 코드입니다. 1차원 배열을 이용해 덧셈과 곱셈까지만 구현합니다. 다항식은 기본적으로 계수(coefficient)와 지수(exponet)로 나타낼 수 있죠. 따라서 (계수,지수)의 쌍으로 다항식의 한 term을 나타낼 수 있습니다. 다항식의 덧셈과 곱셈을 정의하려면 다항식의 몇 가지 특성을 알아야 합니다. 예를 들어 덧셈은 같은 차수에 대해서 계수를 더해야한다는 것, 각 term 들의 곱셈은 지수법칙에 의해 차수의 덧셈으로 구성되어야 한다는 점 등등.. 기본적인 내용은 생략하도록 하겠습니다. // Polynomial.h file #ifndef POLYNOMIAL_H #define POLYNOMIAL_H class Polynomial { public: Pol..

Fast Yet Effective Machine Unlearning (IEEE Transactions 2023, v5)

https://m.blog.naver.com/songsite123/223488533875 Song 전자공학 블로그 글 목록 / 사이트맵기본적으로 네이버 블로그는 구글에 검색되지 않습니다. 구글 검색에 반영하기 위해서는 사이트맵을 만들고...blog.naver.com  Machine unlearning 이란, 간단히 요약하자면 이미 학습된 모델에서 특정 데이터로 학습된 내역을 지우는 작업입니다. 본 논문의 그림은 아니지만 현재 kaggle 에서 열리고 있는 "NeurIPS 2023 - Machine Unlearning“ Competition의 그림을 인용하여 설명해보면 개념은 간단합니다.위처럼 3장의 이미지로 어떤 모델을 학습했다고 생각을 해봅시다. 그런데 알고보니 남의 사진을 허락도 없이 함부로 가져가서..

Towards Deep Learning Models Resistant to Adversarial Attacks (ICLR 2018) - PGD Attack

인공지능 보안 분야에서 정말 유명한 논문인 PGD Training 에 관한 논문입니다. Adversarial attacks 에 대한 Defense 쪽에서는 현재 나오는 논문에서도 베이스라인으로 많이 비교하고 인용 횟수가 1만에 가까운 논문이죠. PGD Attack 을 활용해 robust 한 신경망을 얻어내는 과정과 그 결과물에 대해 배포한 논문입니다. 그럼 논문을 읽어보며 PGD attack이란 도대체 무엇인지, 이걸 통해 어떻게 방어 성능이 좋은 모델을 만들어냈는지 확인해보도록 하겠습니다. Abstract 최근의 연구들은 심층 신경망이 일반 데이터와 거의 구별할 수 없는 adversarial examples들에 매우 취약하다는 것을 보여주었습니다. 이전 논문 리뷰인 FGSM 에서도 다루었죠. 이후의 연..

Explaining and Harnessing Adversarial Examples (ICLR 2015) - Adversarial attack(FGSM)

적대적 공격(Adversarial attack) 이란 딥러닝 모델의 취약점을 이용하여 만든 공격 방법으로, 특정 노이즈값을 이용해 의도적으로 오분류를 이끌어내는 입력값을 만들어 내는 것을 의미합니다. 논문 내 이미지를 통해 예를 들어보면 왼쪽 이미지는 누가 봐도 판다 사진이죠. 가운데 노이즈 이미지는 사람이 보기에 전혀 의미가 없는 이미지 처럼 보입니다. 그러나 가운데 노이즈는 특정 feature 값을 가지고 있는 의도적으로 만들어낸 노이즈이고, 실제로 왼쪽의 판다와 가운데 사진을 더해서 만든 사진이 오른쪽 사진인데, 육안으로 보기에는 똑같아 보이지만 오른쪽 사진은 gibbon, 긴팔 원숭이로 딥러닝 모델이 분류하고 있는 겁니다. 즉 딥러닝 모델은 사람보다 훨씬 자세하게 이미지의 정보를 학습하기 때문에,..

[DL] 선형 회귀 ( Linear Regression )

오늘의 포스팅에서는 파이썬(Python) 만으로 그리고 파이토치(PyTorch)를 이용하여 간단한 선형 회귀 모델을 만들어 보겠습니다. Python 선형 회귀 구현 (Bias X) Python 선형 회귀 구현 (Bias X) PyTorch 선형 회귀 구현 PyTorch 다변수 선형 회귀 구현 Python 선형 회귀 구현 (Bias X) 하루 노동 시간 하루 매출 1 25,000 2 55,000 3 75,000 4 110,000 5 128,000 6 155,000 7 180,000 위 표와 같이 하루 노동 시간에 따른 하루 매출 데이터가 있다고 가정하겠습니다. 하루 노동 시간이 8시간일 때 하루 매출은 얼마가 될까요? 이 질문에 대답하기 위해서는 1시간, 2시간, ... , 7시간을 일했을 때 얼마를 벌었..

Attention is All You Need (NIPS 2017) - Transformer

오늘 소개할 논문은 최근에도 자연어 처리와 비전 분야 모두에서 월등한 성능을 보이면서 발전하고 있는 Transformer 에 대한 논문입니다. 비전공자도 누구나 아는 ChatGPT 에서 GPT model 또한 Transformer 의 디코더 아키텍처를 활용한 모델입니다. Transformer 을 처음으로 제안한 논문이 바로 "Attention is All You Need" 으로 논문의 이름에서 알 수 있듯 트랜스포머 아키텍처는 Attention 메커니즘을 핵심 아이디어로 사용하고 있다는 것을 유추할 수 있습니다. 바로 이전의 논문 리뷰 순서가 Seq2Seq, Seq2Seq with Attention 논문이었습니다. Seq2Seq 는 기존의 통계적 기계번역이 아닌 신경망 기계번역, 그 중에서도 인코더-디코..

Neural Machine Translation by Jointly Learning to Align and Translate (ICLR 2015) - Seq2Seq with Attention

이전의 Seq2Seq 모델은 하나의 인코더 LSTM을 사용해 입력 문장을 하나의 고정된 크기를 가지는 Context vector 로 변환하고, 이 Context 벡터를 디코더 LSTM의 입력으로 사용해 출력 문장을 뽑아내는 방법을 사용하였습니다. 이 구조의 문제점 중 하나는 병목(Bottlenect) 현상으로 성능 하락의 주 원인입니다. 또한 하나의 Context vector 가 소스 문장의 모든 정보를 가지고 있어야 하므로 성능이 저하된다는 문제점 또한 발생합니다. 이를 해결하기 위해 매번 소스 문장에서의 출력 전부를 입력으로 받으면 어떨까? 라는 의문점으로 시작하는 것이 본 논문의 핵심입니다. 이번 논문은 Seq2Seq 모델에 어텐션(Attention) 메커니즘을 적용한 논문입니다. 디코더의 개선에 ..

Sequence to Sequence Learning with Neural Networks (NIPS 2014) - Seq2Seq

2014년 NIPS에 발표된 Sequence to Sequence Learning with Neural Networks 논문 리뷰 포스팅입니다. 이 논문은 LSTM을 활용한 Seq2Seq 기계 번역 아키텍처를 제안하는 NLP 분야의 기초 논문입니다. 이전의 DNN을 통한 Translation 은 SMT, 즉 통계적 방식을 통한 번역의 부분적 요소로만 활용되었습니다. 언어의 특성 상 요소들의 관계나, 연속적인 데이터를 통해 출력을 내놓는 것이 쉽지 않았기 때문입니다. 이 후 RNN 이나 LSTM 처럼 Sequence data에 대해서도 좋은 성능을 보여주는 모델이 등장하게 됩니다. 그러나 이들의 문제점은 Input 으로 Fixed-length vector를 넘겨주어야 한다는 점인데, 가변적인 길이를 가지는..

An Overview of Gradient Descent Optimization Algorithms (Arxiv 2016)

2016년 학회는 아닌 아카이브에 등재된 논문이며, 인용 횟수가 꽤 높은 Gradient Descent Optimaization Algorithms 논문입니다. 전반적인 GD Optimization Algorithm 들에 대해 정리가 잘 되어 있는 논문이며, 알고리즘들의 동작 원리와 사용 이유, 차이점에 대해 이해하기 위한 논문 리뷰입니다. 이 논문 내의 기능들은 대부분 PyTorch 내에 구현되어 있기 때문에 사용은 어렵지 않습니다. 애초에 알고리즘들을 정리하는 논문이기 때문에 원본 논문의 내용을 살리되 논문 내용 뿐 아니라 추가적으로 이해에 도움이 되는 외부 자료나 gif 등을 추가하면서 정리하도록 하겠습니다. An overview of gradient descent optimization algor..

728x90