کاغذ گراف و کاغذ کالک
دو نمونه از کاغذ های مورد استفاده ذر طراحی و نقشه کشی های مهندسی کاغذ گراف و کاغذ کالک است. که هرکدام با توجه به ویژگی های خواص خود دارای کاربرد های مختلفی هستنند که به توضیح هریک از آن ها می پردازیم.
کاغذ گراف
کاغذ گراف چیست؟
کاغذ گراف نوعی از کاغذ است که برای نوشتن و کشیدن طرح مورد استفاده قرار می گیرد. کاغذ گراف از خطوط عمودی و افقی ساخته شده است که که نتیجه برخورد آن ایجاد مربع های کوچک می باشد. کاغذ گراف مختصات یک نوع کاغذ نوشتاری چاپ شده است، که سطح این کاغذ را خطوط افقی به شکل مکعب تشکیل داده است. کاغذ گراف به صورت تکی و ورق های مجزا و به صورت صحافی شده در یک دفترچه یا دفتر موجود است.
کاربرد کاغذ گراف
از کاغذ گراف برای طراحی در مقیاس های مختلف به جای اندازه گیری خط با خط کش استفاده می شود. کاغذ گراف برای اندازه گیری های مختلفی مورد استفاده قرار می گیرد تا نقشه های مهندسی به راحتی بر روی کاغذ طراحی شوند. از کاغذ گراف به عنوان یک خط کش دو بعدی نیز استفاده می شود.
کاغذ کالک چیست؟
کاغذ کالک مهم ترین کاغذ مهم ترین کاغذ مورد استفاده در نقشه کشی و مهندسی به حساب می آید و مهندسین از این کاغذ برای آرشیو کردن مطالب خود استفاده می کنند. کاغذ کالک در ابتدا انواع مختلف گراف ها برای مهندسین و آرشیتکت ها تولید شد تا بتوانند طرح های خود را با این کاغذ ها ترسیم و کپی کنند. اما بعد ها از این کاغذ مورد استفاده های دیگر قرار گرفت، که اسفاده اصلی این کار برای طراحی و کپی بود. و با پیشرفت تکنولوژی و دیجیتالی کمتر مورد استفاده قرار گرفت.
کاغذ کالک
کاغذ کالک معمولا از خمیر کاغذ سولفات تولید می شود به طوری که فیبرهای کاغذ را تا مرحله هیدرولیز شده می زنند و این کار با ضربه زدن طولانی انجام می گیرد. کاغذ کالک ممکن است کتد شده یا کتد نشده باشد. کاغذ کالک طبیعی برای چاپ لیزری معمولا کتد نشده است. سایز بندی کاغذ کالک تعین می کند که این کاغذ برای کدام دستگاه، پرینتر لیزری، جوهر افشان و افست مناسب است. کاغذ کالک قابل بازیافت می باشد. در ساخت این کاغذ می توان تا 30% الیاف بازیافتی استفاده کرد.
خصوصیات کاغذ کالک
سطح کاغذ کالک صاف می باشد، این کاغذ زمان مصرف ندارد و کاملا قابل بازیافت است. گرماژ کاغذ کالک معمولا در گرماژ های بالاتر از 60 تهیه می شود. این کاغذ بدون اسید است. کاغذ کالک داری استحکام بسیار بالا است و از کاغذ های پوستی که نوع دیگر کاغذ مهندسی می باشد. کاغذ کالک ، کاغذی نرم وبدون چربی می باشد. از دیگر خصوصیات کالک این است که اشتباهات ترسیمی مرکبی را می توان با کشیدن تیغ به راحتی از روی کاغذ تراشید.
کاربردهای کاغذ کالک
اگر کاغذ کالک را روی عکسی قرار دهیم عکس زیرین به وضوح قابل دیدن است و کپی کردن عکس به راحتی امکان پذیر است. در نتیجه از این کاغذ برای کشیدن نقاشی بسیار مناسب است. کاغذ کالک در روش های چاپ مانند افست و لترپرس استفاده می شود و همچنین در چاپ های لیزری و جوهر افشان کاربرد دارد. از دیگر کاربردهای کاغذ کالک می توان به جلا زدن، تهیه مهر، پانچ و طراحی اشاره کرد.
کاغذ کالک
کاغذ گراف و کاغذ کالک
دو نمونه از کاغذ های مورد استفاده ذر طراحی و نقشه کشی های مهندسی کاغذ گراف و کاغذ کالک است. که هرکدام با توجه به ویژگی های خواص خود دارای کاربرد های مختلفی هستنند که به توضیح هریک از آن ها می پردازیم.
کاغذ گراف
کاغذ گراف چیست؟
کاغذ گراف نوعی از کاغذ است که برای نوشتن و کشیدن طرح مورد استفاده قرار می گیرد. کاغذ گراف از خطوط عمودی و افقی ساخته شده است که که نتیجه برخورد آن ایجاد مربع های کوچک می باشد. کاغذ گراف مختصات یک نوع کاغذ نوشتاری چاپ شده است، که سطح این کاغذ را خطوط افقی به شکل مکعب تشکیل داده است. کاغذ گراف به صورت تکی و ورق های مجزا و به صورت صحافی شده در یک دفترچه یا دفتر موجود است.
کاربرد کاغذ گراف
از کاغذ گراف برای طراحی در مقیاس های مختلف به جای اندازه گیری خط با خط کش استفاده می شود. کاغذ گراف برای اندازه گیری های مختلفی مورد استفاده قرار می گیرد تا نقشه های مهندسی به راحتی بر روی کاغذ طراحی شوند. از کاغذ گراف به عنوان یک خط کش دو بعدی نیز استفاده می شود.
کاغذ کالک چیست؟
کاغذ کالک مهم ترین کاغذ مهم ترین کاغذ مورد استفاده در نقشه کشی و مهندسی به حساب می آید و مهندسین از این کاغذ برای آرشیو کردن مطالب خود استفاده می کنند. کاغذ کالک در ابتدا برای مهندسین و آرشیتکت ها تولید شد تا بتوانند طرح های خود را با این کاغذ ها ترسیم و کپی کنند. اما بعد ها از این کاغذ مورد استفاده های دیگر قرار گرفت، که اسفاده اصلی این کار برای طراحی و کپی بود. و با پیشرفت تکنولوژی و دیجیتالی کمتر مورد استفاده قرار گرفت.
کاغذ کالک
کاغذ کالک معمولا از خمیر کاغذ سولفات تولید می شود به طوری که فیبرهای کاغذ را تا مرحله هیدرولیز شده می زنند و این کار با ضربه زدن طولانی انجام می گیرد. کاغذ کالک ممکن است کتد شده یا کتد نشده باشد. کاغذ کالک طبیعی برای چاپ لیزری معمولا کتد نشده است. سایز بندی کاغذ کالک تعین می کند که این کاغذ برای کدام دستگاه، پرینتر لیزری، جوهر افشان و افست مناسب است. کاغذ کالک قابل بازیافت می باشد. در ساخت این کاغذ می توان تا 30% الیاف بازیافتی استفاده کرد.
خصوصیات کاغذ کالک
سطح کاغذ کالک صاف می باشد، این کاغذ زمان مصرف ندارد و کاملا قابل بازیافت است. گرماژ کاغذ کالک معمولا در گرماژ های بالاتر از 60 تهیه می شود. این کاغذ بدون اسید است. کاغذ کالک داری استحکام بسیار بالا است و از کاغذ های پوستی که نوع دیگر کاغذ مهندسی می باشد. کاغذ کالک ، کاغذی نرم وبدون چربی می باشد. از دیگر خصوصیات کالک این است که اشتباهات ترسیمی مرکبی را می توان با کشیدن تیغ به راحتی از روی کاغذ تراشید.
کاربردهای کاغذ کالک
اگر کاغذ کالک را روی عکسی قرار دهیم عکس زیرین به وضوح قابل دیدن است و کپی کردن عکس به راحتی امکان پذیر است. در نتیجه از این کاغذ برای کشیدن نقاشی بسیار مناسب است. کاغذ کالک در روش های چاپ مانند افست و لترپرس استفاده می شود و همچنین در چاپ های لیزری و جوهر افشان کاربرد دارد. از دیگر کاربردهای کاغذ کالک می توان به جلا زدن، تهیه مهر، پانچ و طراحی اشاره کرد.
کاغذ کالک
مقایسه نسخه های مختلف sql server، کدام ورژن برای شما کاربرد دارد؟
ما در این مقاله ورژن ها، ویرایش ها و نسخه های مختلف Microsoft SQL Server را بررسی خواهیم کرد. مایکروسافت اس کیو ال سرور، یک سیستم مدیریت دیتابیس رابطه ای (RDBMS) است که توسط شرکت مایکروسافت عرضه میشود. SQL Server دیتا بیسی است با امکانات زیاد برای سازمان ها که با نرم افزار هایی مانند Mysql و Oracle Database رقابت دارد. مثل همه RDBMS های دیگر، اس کیو ال سرور مایکروسافت هم بر اساس sql ساخته شده است.
اس کیو ال یک زبان برنامه نویسی استاندارد است که ادمینهای دیتابیس و دیگر متخصصان آی تی از آن برای مدیریت دیتابیس و کوئری کردن دیتای موجود در آن استفاده میکنند. اس کیو ال سرور کاملا وابسته به ترنزاکت اس کیو ال است. نوع خاصی از پیاده سازی اس کیو ال توسط مایکروسافت که امکانات اضافه تری را به زبان استاندارد اضافه میکند تا کارایی آن را بالاتر ببرد. این دو واقع همان چیزی است که sql server را از دیگر رقیبانش جدا میکند.
نسخههای مختلف SQL Server
نسخههای مختلفی از اس کیو ال سرور وجود دارد که از آغاز کار این سیستم تا به امروز وارد بازار کار شده است. همچنین ویرایشهای مختلفی از این سیستم مدیریت پایگاه داده به بازار آمده که در ادامه به بررسی آنها خواهیم پرداخت. مابین سال ۱۹۹۵ میلادی تا ۲۰۱۹ مایکروسافت دوازده نسخه مختلف را وارد بازار کرده است. نسخههای اولیه این سیستم صرفا برای کارهای داخلی تولید شده بود.
مایکروسافت برای نسخه های بعدی امکانات این سیستم را افزایش داد تا بتواند آن را وارد بازار عمومی کرده و دیگر سیستمهای مدیریت رابطه ای دیتابیس رقابت کند. در اینجا فهرستی از این نسخهها موجود است. در ادامه با جزییات بیشتری به مقایسه امکانات موجود در این نسخهها خواهیم پرداخت.
- SQL Server 2019
- SQL Server 2017
- SQL Server 2016
- SQL Server 2014
- SQL Server 2012
- SQL Server 2008 R2
- SQL Server 2008
- SQL Server 2005
- SQL Server 2000
- SQL Server 7.0
- SQL Server 6.5
- SQL Server 6.0
ویرایشهای مختلف SQL Server
ویرایشهای مختلفی از اس کیو ال سرور وجود دارد که امکانات مختلفی را ارائه میدهند و قیمتهای متفاوتی دارند. انتخاب ویرایش مناسب میتواند کار سختی باشد. انتخاب ویرایشهای مختلف به فاکتورهای مختلفی وابسته است. به میزان بودجهای که در اختیار دارید، نیازمندیهای شما و سخت افزار و نرم افزاری که استفاده میکنید وابسته است.
در این مقاله ما صرفا به برشمردن نام این ویرایشها بسنده خواهیم کرد اما برای کسب اطلاعات بیشتر درباره اینها میتوانید به وبسایت مایکروسافت مراجعه کنید. لازم به ذکر است که متاسفانه به دلیل قیمت بالای محصولات اصلی و عدم رعایت حقوق کپی رایت در ایران این نسخه ها و ویرایش ها به صورت غیر قانونی استفاده می شوند.
- Enterprise
- Standard
- Workgroup
- Web
- Developer
- Express
- Compact
- Datacenter
- Business Intelligence
- Enterprise Evaluation
تفاوتهای موجود بین ورژنهای مختلف SQL Server
SQL SERVER 2008
- در همه نسخه جداول مدل تعبیر معنایی هوش تجاری (Tabular BI semantic model ) وجود دارد.
- خدمات داده اصلی یا مادر (Master data services ) در همه نسخهها موجود است.
- خدمات کیفیت داده (Data quality services) در همه نسخهها موجود بود به غیر از نسخه ۲۰۰۸.
- این نسخه قابلیت کار کردن با چندین سرور مجزا به صورت همزمان (Multi Server Management ) را نیز دارد
SQL SERVER 2012
- ذخیره ستونی اطلاعات (In Memory, ColumnStore) در حافظه از سال ۲۰۱۲ به بعد اضافه شد.
- جداسازی وظایف برای اولین بار در نسخه ۲۰۱۲ دیده شد.
- امکان پشتیبان گیری برای Azur از سال ۲۰۱۲ تا ۲۰۱۷ موجود بود.
- بهینه سازی تصاویر ویرچوال ماشین در گالری Azur از سال ۲۰۱۲ به بعد عرضه شد.
- خدمات اینتگریشن (Integration services) از سال ۲۰۱۲ به بعد به عنوان سرور مدیریت میشوند.
- در این نسخه شما به راحتی میتوانید دیتابیسها را مابین اینستنس (instance)ها جا به جا کنید.
- این نسخه همچنین در بخش امنیت، پیشرفتهای فراوانی داشته است.
مقاله مرتبط: سرویس های SQL Server
SQL SERVER 2014
- امکان OLTP در حافظه (In-memory OLTP) از سال ۲۰۱۴ در اس کیو ال سرور پشتیبانی شد.
- افزونه بافر پول برای SSD یا (Buffer Pool Extension to SSD) از سال ۲۰۱۴ به بعد در دسترس بود.
- رمزگذاری پشتیبان (Back-up encrypt) از سال ۲۰۱۴ ارائه میشود.
- بازیابی مشکلات بزرگ (Disaster recovery) در Azur از سال ۲۰۱۴ به بعد موجود است.
SQL SERVER 2016
- بررسی و تحلیل عملیات به صورت همزمان (Real-time Operational Analytics) صرفا در نسخههای ۲۰۱۶ و ۲۰۱۷ دیده شد.
- گروههای دسترسی ابتدایی (Basic Availability Groups) صرفا در نسخههای ۲۰۱۶ و ۲۰۱۷ عرضه شد.
- نقاب داده پویا و امنیت در سطح ردیف (Dynamic Data Masking and Row Level Security ) از سال ۲۰۱۶ و ۲۰۱۷ اضافه شده است.
- پایگاه داده منعطف (Optimized virtual machine images) در ورژنهای ۲۰۱۶ و ۲۰۱۷.
- جداول موقتی (Temporal tables) در نسخههای ۲۰۱۶ و ۲۰۱۷ ارائه شد.
- پشتیبانی از JSON صرفا در نسخههای بعد سال ۲۰۱۶ موجود است.
- تحلیل پیشرفته داده در دیتابیس (In-database advanced analytics) از سال ۲۰۱۶ و ۲۰۱۷.
- نسخه ۲۰۱۶ دیگر از پردازندههای ۳۲ بیتی پشتیبانی نمیکند و صرفا بر روی سیستمهای دارای پردازنده ۶۴ بیتی راه اندازی میشود.
SQL SERVER 2017
- پردازش انطباقی کوئری (Adaptive Query Processing) فقط از سال ۲۰۱۷ به بعد وجود دارد.
- امکان نصب و راه اندازی بر روی لینوکس و داکر از سال ۲۰۱۷ به بعد برای کاربران فراهم شد.
- پشتیبانی از دادههایی که به صورت گراف هستند (Graph data support) صرفا از سال ۲۰۱۷ به بعد رخ داد.
SQL SERVER 2019
این نسخه جدیدترین نسخه ای است که مایکروسافت ارائه کرده و بهینه سازیهای فراوانی در همه بخشها روی آن صورت گرفته است.
آموزش مرتبط: دوره مقدماتی آموزش SQL Server 2019
کدام ورژن یا ویرایش مناسب من است؟
اینکه کدام نسخه یا ویرایش مایکروسافت اس کیو ال سرور برای شما مناسب کاملا وابسته به نیازمندیهایی است که شما دارید، سخت افزاری که در اختیار دارید چقدر به روز است و میزان بودجه ای که شرکت شما در اختیار دارد چقدر است. داشتن اطلاعات کافی از این فاکتورها میتواند به شما کمک کند تا ورژن مورد نظر خود را به درستی انتخاب کنید. ویرایش استاندارد انتخاب خوبی است که تقریبا به درد همه شرکتهایی که میخواهند کارشان را به تازگی شروع کنند میخورد. این ویرایش میتواند تا ۱۶ هسته و میزان نامحدودی رم را پشتیبانی کند.
فیلم گردی با فیلیمو – بخش اول: تحلیل گراف بازیگران
این مقاله توسط جناب آقای پوریا گنجی در وب سایت ویرگول منتشر شده است که مهندسی داده با هدف جمعآوری مطالب مفید حوزه پردازش داده، آنرا با کسب اجازه از نویسنده محترم،باز نشر داده است.
پیش نوشت: شاید عنوان پست بیشتر مناسب بخش دوم باشه که به خوشه بندی فیلم ها بر اساس متن معرفی فیلم ها میپردازیم. این بخش بیشتر به تحلیل اطلاعات بازیگران فیلم ها اختصاص داره.
چند سال اخیر شاهد کاهش قدرت تلویزیون و رشد مصرف انواع مختلف گراف ها محتوای ویدیویی بر بستر اینترنت بودیم. یکی از رقبای تلویزیون در این مورد، VOD ها هستن که در ازای پرداخت حق اشتراک مشخصی به ما امکان میدن در هر ساعتی از روز برنامه دلخواه خودمون رو تماشا کنیم. فیلیمو معروف ترین سرویس دهنده تو این حوزه به شمار میره. یکی از قابلیت هایی که فیلیمو برای کاربران فراهم کرده و دسترسی به محتوا رو راحت تر میکنه، دسته بندی بر اساس ژانر و زمان ساخت فیلمه. در ادامه با هم به دسته فیلم های دهه ۹۰ شمسی که شامل حدود ۳۶۰ فیلم میشه میپردازیم.
داده های سایت فیلیمو شامل اسم فیلم، معرفی فیلم، ژانر، بازیگران و سایر عوامل فیلم میشه. با استفاده از اطلاعات بازیگران، روابط بین اونها رو در یک شبکه مدلسازی میکنیم و نگاهی به مهم ترین بازیگران و همکاری هایی که ممکنه اتفاق بیفته، داریم.
مدلسازی رو بر اساس مفهوم گراف انجام میدیم. گراف ساختاری شامل اشیای به هم پیوسته هست. در ساده ترین حالت، رابطه دوستی میتونه یک گراف باشه. مثلا من تعدادی دوست دارم و دوستانم به همین ترتیب تعدادی دوست دارن. دوستان دوست من ممکن هست دوست من هم باشن یا نباشن. مشابه رابطه دوستی در شکل زیر. (گرافی که معرفی کردیم دسته گراف غیر جهت دار هست دسته های دیگری از گراف ها هم وجود دارن مثل گراف جهت دار که علاوه بر وجود رابطه، جهت رابطه هم معنی دار هست مثل رابطه پدر و فرزندی).
هر شخص در اینجا یک راس (node) حساب میشه و رابطه دوستی، یال (edge) گفته میشه. همین طور تعداد روابط مربوط به هر راس درجه (degree) هر راس محسوب میشه. گراف ها کابردهای متنوعی دارن. نحوه انتشار اخبار در توییتر و شناسایی جریان اطلاعات و کاربران تاثیرگزار در انتشار اطلاعات، شبکه حمل و نقل و شناسایی نقاط مهم و طراحی شبکه به گونه ای که شبکه در حالت کلی پایدار بمونه و با حذف برخی از راس ها مختل نشه و امکان ادامه فعالیت داشته باشه. شبکه های احتماعی و طراحی پیش نهاد دهنده (recommender) بر اساس دوستان مشترک بخشی از کاربردهای تحلیل گراف هست. در مورد داده های فیلیمو ما مجموعه بازیگران رو به عنوان راس، رابطه همبازی بودن به عنوان یال و تعداد همبازی های هر بازیگر رو درجه بازیگر در نظر میگیریم. برای مصورسازی روابط و تحلیل هایی که میتونیم در یک گراف انجام بدیم از نرم افزار Gephi استفاده کردم. Gephi رابط کاربری نسبتا ساده ای داره و میتونیم انواع داده ها با فرمت های مخالف رو به عنوان ورودی به نرم افزار بدیم، داده ها رو براساس معیارهای مختلف filter کنیم و انواع تحلیل ها رو به راحتی روی داده ها انجام بدیم. هسته نرم افزار به کمک زبان جاوا نوشته شده و امکان افزودن امکاناتی که توسط سایر کاربران توسعه داده شده با نصب plugin ها وجود داره. اطلاعات مورد استفاده ما شامل دو فایل جداگانه برای اطلاعات راس ها (بازیگران) و یال ها (رابطه همبازی بودن) هستن و در دو مرحله داده ها رو import میکنیم (مطابق راهنمای github نرم افزار).
ستون id : شناسه منحصر به فرد هر بازیگر
ستون actor : نام بازیگر
ستون weight : تعداد فیلم هایی که هر بازیگر بازی کرده
ستون source : مبدا یال
ستون target : مقصد یال
ستون title : نام فیلم
داده های ما در مجموع شامل اطلاعات ۱۰۱۴ بازیگر، ۷۷۳۰ رابطه همبازی بودن و ۳۶۰ فیلم هست. میانگین تعداد همبازی برای هر بازیگر ۱۵٫۲به دست امده یعنی هر بازیگر به طور متوسط با ۱۵ نفر همبازی بوده.
بعد از ورود داده ها، موقعیت راس ها روی صفحه به صورت تصادفی انتخاب میشه که میتونیم از طریق پنجره layout اون رو تغییر بدیم. مثلا اگر مایل باشیم رئوسی که از نظر وزن ( weight) و تعداد روابط (degree) شبیه هم هستن نزدیک هم قرار بگیرن میتونیم از openord استفاده کنیم. به این ترتیب رئوسی که خصوصیاتی مشابه دارن در یک محدوده قرار میگیرن. یا خیلی ساده میتونیم با انتخاب circular layout رئوس رو به ترتیب یک خصوصیت مثلا تعداد فیلم های هر بازیگر (weight) روی محیط یک دایره قرار بدیم.
در ادامه انواع layout و موارد استفاده هر کدوم اشاره شده
بصری سازی داده ها امکانات جالبی رو فراهم میکنه مثلا میتونیم اندازه هر راس رو معادل تعداد فیلم های هر بازیگر (weight) و تعداد افرادی که با اونها همبازی بوده (درجه – degree) رو به صورت شدت رنگ در نظر بگیریم به این صورت که هر قدر اندازه راس بزرگتر، تعداد فیلم های بیشتر و هرچقدر پررنگ تر تعداد همبازی ها بیشتر. با کلیک روی هر راس، راس های مجاور نمایش داده میشن و به این ترتیب برای هر بازیگر همبازی ها قابل تشخیص میشن.
همون طور که در تصویر مشخصه سه بازیگری که بیشترین فیلم رو در مجموعه داده های ما داشتن به ترتیب سحر قریشی، مهران رجبی و بابک حمیدیان بودن. هرکدوم به ترتیب در بیست ویک، نوزده و هفده فیلم حضور داشتن.
در ادامه به مرور تعدادی از اصطلاحات و روابط در گراف داده ها میپردازیم.
قطر شبکه (network diameter) به معنی حداکثر فاصله موجود بین دو نقطه در شبکه هست. در مجموعه داده های ما بیشترین فاصله بین بازیگران ۷ رابطه هست به این معنی که هر بازیگر حداکثر با ۷ واسطه با هر بازیگر دیگری ارتباط داره. مثلا بین صدرالدین حجازی و یاسمن نصرتی این حداکثر فاصله ۷ تایی وجود داره ( قطر شبکه ۷ است) و کوتاه ترین زنجیره بین این دو بازیگر به این صورته :
‘صدرالدین حجازی’>> ‘آزاده ریاضی’>> ‘زهره حمیدی’>> ‘سحر قریشی’>> ‘لیلا زارع’>> ‘نسیم ادبی’>> ‘عصمت رضاپور’>> ‘یاسمن نصرتی’
میانگین فاصله (average path length) بین تمام بازیگران در شبکه حدود ۳ هست یعنی به طور متوسط هر بازیگر با ۳ واسطه با بازیگر دیگه در ارتباطه.
در هر گرافی امکان داره راس هایی وجود داشته باشن که جدا از سایر راس های مجموعه باشن. به این ترتیب که فقط بین چند راس رابطه وجود داره و خودشون به تنهایی زیرگراف (connected components) تشکیل میدن. در مجموعه داده های ما در مجموع ۱۲ زیرگراف موجوده که در شکل زیر قابل مشاهده هست. حدود ۹۵ درصد از راس ها گراف اصلی رو تشکیل میدن (گراف سبز رنگ) و سایر گراف ها مربوط به بازیگرانی هستن انواع مختلف گراف ها که فقط در یک فیلم حضور داشتن و با همون مجموعه بازیگران همبازی بودن که در ادامه به همین دلیل از نتایج تحلیل کنار گذاشته میشن.
برای شناسایی راس های مهم در شبکه معیارهای مختلفی وجود داره مثلا در مورد شبکه حمل و نقل فرودگاهی بین المللی، شهر تهران، راس مهمیه، چون عمده پروازهای بین المللی مبدا و مقصدشون شهر تهرانه و در شبکه به عنوان hub محسوب میشه.
معیار closeness centrality یکی دیگه از شاخص ها برای شناسایی راس های مهم در شبکه هست و هر راس از نظر میانگین فاصله با سایر راس ها ارزیابی میشه و طبق این فرض کار میکنه که راس مهم کمترین فاصله رو با سایر راسها در شبکه داره.
در ادامه نتیجه ارزیابی بر اساس این شاخص رو مشاهده میکنین:
معیار دیگه برای ارزیابی راس های مهم betweenness centrality هست و راس ها از نظر میزان تکرار در مسیر سایر راس ها ارزیابی میشن. به این ترتیب راسی مهم هست که به عنوان واسطه ارتباط بین سایر راسها قرار میگیره و طبق معادله زیر به دست میاد.
مثلا برای محاسبه betweenness centrality مربوط به راس ۲۰ در شکل زیر به این صورت عمل میکنیم. برای نمونه دو راس ۲و ۳۴ رو انتخاب میکنیم. بین دو راس ۳۴ و ۲ سه مسیر (کوتاه ترین مسیر) وجود داره و یکی از این مسیرها از راس ۲۰ میگذره. پس یکی از معادلات برای محاسبه ۱/۳ هست. حالا باید تمام مسیرهای موجود برای هر جفت راس و تعداد تکرار راس ۲۰ در اونها در شبکه محاسبه بشن و با هم جمع بشن تا betweenness centrality برای راس ۲۰ رو داشته باشیم.
نتیجه شاخص betweenness centrality روی داده های فیلیمو:
طبق خروجی های دو جدول بالا، نتایج با هم شباهت هایی دارن و بیشتر بازیگران بر اساس دو معیار مشترک هستن. روش های دیگه ای برای سنجش راس های مهم در شبکه (مثل eigenvector centrality) وجود داره که براساس شرایط مساله و رفتار شبکه میتونیم از اونها استفاده کنیم.
یکی دیگه از سولات مهمی که میشه در مورد رفتار شبکه پرسید اینه که در آینده بین کدوم راس ها احتمال بیشتری وجود داره که اتصال برقرار بشه (link prediction) یا کدوم ترکیب از بازیگران مناسبه و میتونه در فیلم های آینده استفاده بشه.
ساده ترین روش اینه که کدوم بازیگران همبازی های مشترکی دارن اما هنوز با هم همبازی نبودن (common neighbours).
برای پاسخ به این پرسش ماژولی در gephi وجود نداره. بنابراین از ماژول networkx در زبان پایتون استفاده شده.
به این ترتیب ۱۰ تا از بازیگرانی که همچین شرایطی رو داشتن مشخص شدن. مثلا امین حیایی و بهنوش بختیاری ۱۹ همبازی مشترک داشتن در صورتی که هنوز با هم همبازی نبودن.
معیار دیگه برای پیش بینی مسیرهای آینده resource allocation هست. این معیار بر اساس میزانی از منابع که از راسی به راس دیگه و از طریق همسایگان مشترک، انتقال پیدا میکنه، محاسبه میشه.
برای درک بهتر نحوه محاسبه این شاخص راسهای A,C شکل زیر رو بررسی میکنیم
مثلا برای محاسبه resource allocation دو راس A و C در شکل بالا به این صورت عمل میکنیم. از A تا C دو راس BوD وجود داره. برای راس B یک سوم از مسیرها به C ختم میشه (از مجموع سه مسیر برای B یک مسیر به C میرسه) و همین طور برای راس D یک سوم از مسیرها به C ختم میشه (از مجموع سه مسیر برای D یک مسیر به C میرسه).
راهنمای تخصصی شبکه های عصبی گراف در بینایی رایانه
در مقاله حاضر، قصد داریم به آن دسته از پرسشهایی پاسخ دهیم که افرادِ تازه کار با گراف یا شبکه های عصبی گراف مطرح میکنند. در همین راستا، از نمونههای PyTorch برای طبقهبندیِ ایدۀ پشت این نوع مدل نسبتاً جدید استفاده کردهایم.
تصویر MNIST در گوی سه بعدی. اگرچه استفاده از شبکههای پیچشی برای طبقهبندی دادههای کروی کار آسانی نیست، اما شبکههای گراف قادر به مدیریت و انجام این کار هستند.
پرسشهایی که در این بخش از مقاله بررسی میشوند:
۱. چرا گرافها مفیدند؟
۲. چرا تعریف پیچش convolution در نمودارها کار دشواری است؟
۳. چه عاملی باعث تبدیل شبکه عصبی به شبکه عصبی مبتنی بر گراف میشود؟
برای پاسخگویی به این پرسشها، به ارائه مقالهها و نمونهها و اسکریپتهای پایتونی خوبی خواهیم پرداخت تا اطلاعات خوبی درباره شبکه های عصبی گراف یا «GNN»ها بهدست آورید. انتظار داریم خوانندگان این مقاله، دانش پایه در خصوص یادگیری ماشین و بینایی رایانه داشته باشند. با این حال، یک سری اطلاعات پسزمینهای و توضیحات بیشتر در اختیار خوانندگان قرار خواهیم داد. اول از همه، بگذارید بهطور خلاصه توضیح دهیم که گراف یا نمودار چیست؟
گراف (G)
گراف (G) به مجموعهای از گرههای به همپیوسته توسط لبهها گفته میشود. گرهها و لبهها معمولاً از دانش تخصصی در خصوص مسئله مورد نظر نشات میگیرند. این مسئله میتواند اتمهای موجود در مولکولها، کاربرانِ یک شبکه اجتماعی، شهرها در سیستم حمل و نقل، بازیکنانِ یک تیم ورزشی، سلولهای عصبیِ مغز، اجرامِ در حال تعامل در یک سیستم فیزیکیِ پویا، پیکسلهای یک عکس و… باشد. به عبارت دیگر، در بسیاری از موارد عَملی، این خود کاربران هستند که تصمیم میگیرند گرهها و لبهها در نمودار چه باشند. این یک ساختار دادهایِ بسیار انعطافپذیر است که ساختارهای دادهای متعددی را ایجاد میکند.
برای مثال، اگر هیچ لبهای وجود نداشته باشد، ساختار به یک مجموعه تبدیل میشود؛ اگر فقط لبههای عمودی وجود داشته باشد و دو گره دقیقاً توسط یک مسیر به هم وصل شده باشند، ساختار درختی به کارمان میآید. این انعطافپذیری میتواند مزایا و معایب خود را داشته باشد که جزئیات آنها را در مقاله حاضر بررسی میکنیم.
۱. چرا گرافها مفیدند؟
در حوزه بینایی رایانهای (CV) و یادگیری ماشین (ML)، مطالعه نمودارها و مدلها برای بهدست آوردن اطلاعات، میتواند دستکم چهار مزیت عمده داشته باشد:
• این کار میتواند کمک موثری در حل آن دسته از مسائل مهمی باشد که از جمله مسائل چالشبرانگیز محسوب میشدند؛ مثل کشف دارو برای سرطان (وسلکوف و همکارانش، مجله نیچر، ۲۰۱۹)؛ درک بهتر ساختار مغز انسان (دیز و سپلوکر؛ مجله Nature Communications، ۲۰۱۹)؛ کشف مواد برای چالشهای زیستمحیطی و انرژی (ژی و همکارانش، مجله Nature Communications، ۲۰۱۹)
• دادهها در اکثر حوزههای بینایی رایانه (CV) و یادگیری ماشین (ML) به عنوان نمودار در نظر گرفته میشوند، اگرچه عادت داریم آنها را به عنوان ساختار داده دیگری در نظر بگیریم. نمایش دادهها انعطافپذیری زیادی دارند و دید جالب و متفاوتی درباره مسئله مورد نظر در اختیارمان میگذارند. برای مثال، شما میتوانید به جای یادگیری از پیکسلهای عکس، از سوپرپیکسلها استفاده کنید. مقاله BMVC هم اطلاعات خوبی در این زمینه فراهم کرده است.
نمودارها این فرصت را به ما میدهند تا استدلالی منطقی در خصوص دادهها انجام دهیم که باید دانش و اطلاعات قبلی هم درباره آن مسئله داشته باشید. برای مثال، اگر میخواهید درباره ژست بدنی یک انسان به استدلال بپردازید، سوگیری منطقی شما میتواند نموداری از مفاصل بدن انسان باشد. یا اگر میخواهید درباره فیلمها استدلال کنید، باید سوگیری منطقی خود را بر پایه کادرهای متحرک قرار دهید. مثال دیگر، نمایش دادن ویژگیهای صورت در قالب یک نمودار است تا درباره هویت و ویژگیهای مختلف چهره به استدلال پردازیم.
• شبکه عصبی مورد علاقهتان را هم میتوانید یک نمودار در نظر بگیرید؛ پس گرهها به عنوان سلولهای عصبی و لبهها به عنوان وزن عمل میکنند. به عبارت دیگر، گرهها نقش لایه را ایفا کرده و لبهها جریان پس و پیش را نشان میدهند. در این مورد، منظورمان یک نمودار محاسباتی است که در تنسورفلو، PyTorch و سایر چارچوبهای DL استفاده میشود. از جمله کاربرد آن میتوان به بهینهسازی نمودار محاسبه، جستجوی معماری عصبی، تجزیه و تحلیل رفتار آموزش و… اشاره کرد.
• در نهایت، میتوانید مسائل زیادی را حل کنید؛ دادهها به شکل موثر و طبیعیتری در قالب نمودار به نمایش درمیآیند. این مورد میتواند در طبقهبندی شبکه اجتماعی و مولکولی، طبقهبندیِ مِش سهبعدی، مدلسازیِ رفتار اشیایی که به صورت پویا با هم برهمکنش میکنند، مدلسازی نمودار صحنه بصری (کارگاه ICCV)، پاسخگویی به پرسش، فعالیتهای یادگیری مختلف و بسیاری دیگر از مسائل نیز استفاده شود.
از آنجا که تحقیقات قبلی به تشخیص و تحلیل چهره و عواطف مربوط میشود، شکل زیر جزئیاتی در خصوص تحقیقاتمان را به تصویر میکِشد.
در این شکل ، یک چهره در قالب نمودار به نمایش در آمده است. این روش جالبی است، اما در بسیاری از موارد نمیتواند تمام ویژگیهای چهره را پوشش دهد. شبکههای پیچشی اطلاعات بسیار زیادی درباره بافت صورت در اختیارمان میگذارند. در مقابل، استدلال با مِشهای سهبعدی چهره روش معقولتری در مقایسه با روشهای دوبعدی به حساب میآید.
۲. چرا تعریف لایه پیچش در نمودارها کار دشواری است؟
برای پاسخگویی به این پرسش، در ابتدا باید به علاقهمندان استفاده از شبکه پیچشی انگیزه بدهیم. سپس، «ویژگیهای پیچشی عکس» را با استفاده از اصطلاح نمودار توضیح دهیم.
۲.۱ چرا لایه پیچشی میتواند مفید باشد؟
بگذارید ببینیم چرا پیچش تا این حد میتواند برای ما اهمیت داشته باشد و چرا استفاده از آن در نمودارها ضرورت دارد. شبکههای پیچشی در مقایسه با شبکههای عصبیِ کاملاً بههمپیوسته دارای مزیتهای مشخصی هستند که در بخش زیر بر اساس تصویر یک ماشین شورلت قدیمی و زیبا توضیح داده خواهد شد.
اولا، شبکههای پیچشی در عکسها ارجحیت طبیعی دارند.
• تغییرناپذیری – جابجایی: اگر خودرویی را که در این عکس مشاهده میکنید به چپ، راست، بالا و پایین تصویر حرکت بدهیم، باید کماکان بتوانیم آن را به عنوان یک خودرو تشخیص دهیم. این کار با بهکارگیری فیلترهایی در تمامی موقعیتها (یعنی استفاده از پیچش) انجام میشود.
• ویژگی محلی: پیکسلهای پیرامون ارتباط نزدیکی با هم دارند و غالباً از نوعی مفهوم معنایی حکایت دارند؛ مثل پیکسلهای تشکیل دهنده چرخ یا پنجره. این کار با استفاده از فیلترهای نسبتاً بزرگ انجام میشود که میتوانند ویژگیهای عکس را در محدوده فضایی محلی پوشش دهند.
• حالت ترکیبی (یا سلسلهمراتبی): ناحیه بزرگتر در عکس غالباً والدین معناییِ نواحی کوچکتر برشمرده میشود. برای مثال، خودرو والدین درها، پنجرهها، چرخها، راننده و… میباشد. راننده نیز والدین سر، بازو و… است. استفاده از لایههای پیچشی و لایه «Pooling» یا ادغام در این راستا کارساز خواهد بود.
در ثانی، تعداد پارامترهای قابل آموزش (مثل فیلترها) در لایههای پیچشی به ابعاد ورودی بستگی ندارد و از دیدگاه فنّی، همان مدل را میتوان در عکسهای ۲۸ * ۲۸ و ۵۱۲ * ۵۱۲ آموزش داد. به عبارتی، مدل حالت پارامتری دارد. در حالت ایدهآل هدفمان ساخت مدلی است که مثل شبکه های عصبی گراف، انعطافپذیری زیاد و قابلیت یادگیری از هر دادهای را داشته باشد. در ضمن، میخواهیم عوامل موثر در این انعطافپذیری را با بررسی اولویتها کنترل کنیم.
در ایدهآلترین حالت، هدف ما توسعه مدل یادگیری ماشینی است که به اندازه ساختار شبکه های عصبی گرافی منعطف باشد و بتواند از دادهها آموزش ببیند و یاد بگیرد و به طور موازی این قابلیت را داشته باشیم که فاکتورهای مهم را کنترل کنیم و این انعطاف را با خاموش/روشن کردن نورون های عصبی به دست بیاوریم.
تمامی این ویژگیها باعث میشوند شبکههای پیچشی از بیشبرازش Locality جلوگیری کنند و مقیاسپذیری بالایی در مجموعهدادهها و عکسهای بزرگتر داشته باشند. بنابراین، وقتی بخواهیم مسائل مهمی را حل کنیم که در آنها دادههای ورودی دارای ساختار گرافی هستند، باید همه این ویژگیها را در شبکه های عصبی گراف (نموداری) به کار ببریم تا مقیاسپذیری و انعطافپذیری افزایش پیدا کند. در حالت ایدهآل، هدفمان ساخت مدلی است که مثل شبکه های عصبی گراف انعطافپذیری زیادی داشته و قابلیت یادگیری از هر دادهای را داشته باشد.
در ضمن، میخواهیم عوامل موثر در این انعطافپذیری را با بررسی اولویتها کنترل کنیم. این کار میتواند باعث گسترش دامنه تحقیقات شود. با این حال، کنترل این موارد چالشبرانگیز خواهد بود.
۲.۲ پیچش در عکسها بر حسب گراف ها
نمودار G با گرههای N را در نظر بگیرید. لبههای E نشاندهندۀ پیوندهای غیرمستقیم بین گرهها است. گرهها و لبهها از شهودِ شما درباره مسئله نشات میگیرند. شهود ما در مورد عکسها این است که گرهها در واقع پیکسل یا سوپرپیکسل (گروهی از پیکسلها با اَشکال عجیب) هستند و لبهها به فواصل فضایی میان آنها گفته میشود.
برای مثال، عکس MNIST که در پایین (سمت چپ) مشاهده میکنید، در قالب ماتریسی با ابعاد ۲۸ * ۲۸ نشان داده شده است. میتوانیم آن را به صورت مجموعه N=28*28=784 نیز نشان دهیم. بنابراین، نمودار G دارای ۷۸۴ گره است و لبهها در صورتی مقادیر بزرگتری خواهند داشت که پیکسلها در نزدیکی آنها باشند. در صورتی هم که پیکسلها در فاصله دوری واقع شده باشند، لبهها مقدار کوچکتری خواهند داشت.
این عکس از مجموعهداده MNIST (سمت چپ) گرفته شده است. مثالی از نمایشِ نموداری آن در سمت راست قابل مشاهده است. گرههای تیره و بزرگ در سمت راست نشاندهندۀ شدت بالای پیکسلها است. شکلِ سمت راست از تحقیقات آقای فِی و همکارانش (CVPR، ۲۰۱۸) گرفته شده است.
وقتی شبکههای عصبی یا «ConvNet»ها را از روی عکسها آموزش میدهیم، بهصورت تلویحی عکسها را روی نمودار تعریف میکنیم. از آنجایی که این شبکه در کلیه مراحل آموزش و عکسهای آزمایشی یکسان است (همه پیکسلهای شبکه در همه عکسها به شیوه یکسانی به یکدیگر وصل شدهاند؛ تعداد همسایههای یکسانی دارند و…) این نمودار عادی شبکه فاقد اطلاعات مفیدی است که به ما در تفکیک عکسها از یکدیگر کمک کند. چند شبکه عادی دو بعدی و سه بعدی در زیر ملاحظه میکنید. ما از «NetworkX» در پایتون برای انجام این کار استفاده کردهایم.
مثالهایی از شبکههای دوبعدی و سهبعدی. عکسها و فیلمها به ترتیب در شبکههای دوبعدی و سهبعدی تعریف میشوند.
با داشتنِ شبکه عادی ۴×۴، بگذارید ببینیم پیچش دوبعدی چگونه عمل میکند. با این کار میتوان فهمید که چرا انتقال این اپراتور به نمودارها کار دشواری است. فیلتر در شبکه از تعداد گرههای یکسانی برخوردار است، اما شبکههای پیچشی مدرن فیلترهای کوچکی خواهند داشت (مثل ۳×۳ در مثال زیر). این فیلتر ۹ مقدار دارد: W₁,W₂,…, W₉. بر این اساس، W₁,W₂,…, W₉ در طول آموزش با استفاده از پس انتشار back propagation بهروزرسانی میشود تا مسئله حل شود. در مثال زیر، این فیلتر نقش شناساگرِ لبه edge detector را ایفا میکند.
نمونهای از فیلتر ۳×۳ در شبکه دوبعدی با وزن w (سمت چپ) و شناساگر لبه (سمت راست).
وقتی مراحل پیچش به انجام میرسد، این فیلتر در هر دو جهت به کار برده میشود (یعنی به راست و پایین)، اما هیچچیز نمیتواند مانع این شود که کار را از گوشه پایین شروع کنیم. حرکت در تمامی جهات ممکن از اهمیت بالایی برخوردار است.
باید در هر مرحله به محاسبه «dot product» یا ضرب نقطهای بین مقادیر شبکه و مقادیر فیلترها W: X₁W₁+X₂W₂+…+X₉W₉ بپردازیم و نتایج را در عکس خروجی ذخیره کنیم. در همین راستا، رنگ گرهها را در طول حرکات تغییر میدهیم تا با رنگ گرهها در شبکه، همخوانی داشته باشد. متاسفانه، همانطور که در بخشهای بعدی توضیح خواهیم داد، این مورد برای همه نمودارها صِدق نمیکند.
دو مرحله از پیچش دوبعدی در یک شبکه عادی. اگر عمل لایهگذاری (padding) را انجام ندهیم، در مجموع ۴ مرحله خواهیم داشت. بنابراین، نتیجۀ کار عکس ۲×۲ خواهد بود. برای اینکه عکسِ حاصل را بزرگتر کنیم، باید عمل لایهگذاری را انجام دهیم. شما میتوانید از لینک زیر برای کسب اطلاعات جامع در خصوص یادگیری عمیق استفاده کنید.
ضرب نقطهای که در بالا استفاده شد، یکی از aggregator operator عملگرهای تجمیعی Tooltip text می باشد. هدف عملگر تجمیعی این است که دادهها را خلاصه کند. در این مثال، ضرب نقطهای ماتریس ۳×۳ را به یک مقدار خلاصه میکند. مثال دیگر، عمل ادغام در شبکههای پیچشی است. به خاطر داشته باشید که روشهایی از قبیل ادغام بیشینه مقدار یکسانی را در منطقه فضایی ادغام خواهند کرد، حتی اگر همه پیکسلها را بطور تصادفی درون آن مناطق بگنجانید. بگذارید مسئله را شفافتر توضیح دهیم. ضرب نقطهای با تبدیل یا جایگشت تغییرناپذیر است زیرا در کل داریم: X₁W₁+X₂W₂ ≠X₂W₁+X₁W₂
اکنون بگذارید از عکس MNIST برای بررسی معنای شبکه عادی، فیلتر و پیچش استفاده کنیم. اصطلاحات نمودار را در ذهن داشته باشید. این شبکه عادی ۲۸×۲۸ نمودار G ما خواهد بود. لذا هر سلول در این شبکه یک گره به شمار میرود. هر گره فقط یک ویژگی خواهد داشت. شدت پیکسل از صفر (سیاه) تا ۱ (سفید) متغیر است.
دیدگاه شما